Automate EVERYTHING with Ansible! (Ansible for Beginners)
VloĆŸit
- Äas pĆidĂĄn 24. 07. 2024
- Ansible. Need I say more? Well, maybe, if you've never heard of it. Ansible is a simple IT / DevOps automation that anyone can use. You can Automate anything with an SSH connection and WITHOUT installing any agents or clients. Join me as we set up, configure and start automating with Ansible!
Video Notes: technotim.live/posts/ansible-...
See our collection of common homelab ansible playbooks here!
l.technotim.live/quick-start
Support me on Patreon: / technotim
Sponsor me on GitHub: github.com/sponsors/timothyst...
Subscribe on Twitch: / technotim
Become a CZcams member: / @technotim
Merch Shop đïž: l.technotim.live/shop
Gear Recommendations: l.technotim.live/gear
Get Help in Our Discord Community: l.technotim.live/discord
2nd channel: / @technotimtalks
(Affiliate links may be included in this description. I may receive a small commission at no cost to you.)
00:00 - Intro
00:51 - The problem at hand
01:15 - What is Ansible? Ansible 101
01:35 - Ansible use cases
02:18 - Ansible requirements and setting up our workstation
03:22 - Ansible & SSH
04:02 - Ansible Inventory files
05:20 - Ansible module commands
06:18 - sshpass program
06:52 - What are you we going to automate now?
07:14 - Ansible Playbooks
07:48 - Ansible playbooks yml
08:04 - Create a playbook using the Ansible apt module
09:22 - command with ask-become-pass
10:05 - Execute our apt upgrade playbook
11:16 - Create a playbook to install software
13:06 - Create a playbook that uses a template with multiple tasks
15:56 - Execute our playbook that starts / stops / copies file
16:42 - My challenge to you!
17:12 - Do you use Ansible?
17:46 - Stream Highlights - It's overwhelming all of the knowledge I need...
#Ansible #Homelab #TechnoTim
"Hadron Collider" is from Harris Heller's album Ego.
License: l.technotim.live/sb-music-lic...
Thank you for watching! - VÄda a technologie
What will you automate with Ansible? Updates? Reboots? Software installs? Something else?
Updates, reboots, and synchronizing files between hosts!
Deploy clusters k8s openshift and okd
I went to a redhat provided training on this technology. Ansible vault and secrets password file is going to help out. Also doing roles will further automate things.
Secrets retrieval
I have a lab setup consisting of eight raspberry pie zero w, that Iâm using for various different demonstrations. The possibility to change the usage of them in a fast and reliable way during a lab session is a game changer for me. Thank you for this instructive video! Happy new year and I hope that your continue to make awesome videos in 2021 as well.
I swear you somehow read minds or hacked Google algorithm and found my search about Ansible.
Just perfect timing. Thanks for the content!
đź
This is the automation software I didnât know I needed. Youâve saved me countless hours remoting into VMâs and RPIâs to update on a weekly maintenance schedule! Thanks Tim!
Would love a part two where you use ssh keys only, have day #1 deployments (new infra), day #2 (maintain existing infra). I have dozen of scripts for day #1 and Iâm looking for best practices. Thanks !
I wonder what you ended up doing?
I've been using ansible for years now. Automate machine deployments, updates, config changes, STIG compliance, auditing on and no and on. Awesome tool. Love your video.
I always wanted to learn Ansible, but all videos and websites were very complicated. You explained in a simple and didactic way what made me excited again to study. Congratulations on the great videos.
Dear Tim, thanks for your content, even though there are numerous great channels that do this kind of content there are only a handfull that present this in a interesting and engaging way. Most of the time I watch only the parts to get something running, but I watch all your videos from start to end!
Thanks Tim! Ansible has been on my list to dig into for a while and this was clearly presented and easy to understand!
Glad it was helpful!
Dude, you've been killing it lately. I stumbled upon your channel a couple weeks ago, and it's amazing how similar our homelabs are. I haven't learned anything new yet, but I'm sticking around just in case. Keep up the good work, man!
Thank you so much!
Bro you are literally a godsend. I've been updating all my servers like a peasant and now i can streamline this whole process! Keep up the fantastic work!
Thank you!
This one of the easiest tutorial on youtube. Even I could follow it with any problems and that says alot. Great job!!
I created a playbook which updates all my servers.
Awesome, thank you!
Tim, thank you for taking the time to put this together for us. I really appreciate your teaching style and how you compartmentalize different tools and subjects the best you can. For example here you reference best practices via SSH keys, but chose not to go into it. I remember teaching myself about keys from Google and how it seemed like a huge deal at the time. Had that been included in this tutorial, many would have felt it to be overwhelming as you said. I am going to use your strategy of "containerizing" the subjects as I train my team in the future, thanks again.
Thank you so much!
I use Ansible in conjunction with Terraform to create a fictitious customer network of VMs. We use the range for Red Teaming and Cyber exercise practice. The last administrator retired, so now I have inherited this project and still have a lot to learn but it is fascinating and fun! I wish I had watched your video before I started looking at the ansible code but I feel it helped me understand your content better. Thanks for the video!
Tim, just found your video and love your teaching style. Great presentations and very easy to understand. I have to learn ansible for work and this helps 100%. See you on twitch!
i loved the intro, I wasn't sure what ansible was. You grave a great overview, and then when into the technical. I got to learn what.I needed/wanted about ansible. I learned that it;s a cool tool for automating repetitive tasks, primarily for ssh tasks.
This is something that I'll never need, it was nice to bug out before the technical, knowing this will be an awesome video, just not my video. But I still throw in a like and this comment to make the interactions high!!! Because it was awesome that I got to not have to sit through technical, trying to figure out what the hell the tool does!!!
Great video, thanks. I started using Ansible a few months ago, it has been working very well. I have configured things slightly differently, I have used "roles" for each sort of thing I want to be on each system (web server, router, ssh, misc, etc.) and then control that via a playbook that pulls in the roles. For me the nice part about roles is I can have all the templates, config files, etc. all in the role directory of each role so I know what files belong to what role.
Thanks for the info! I am converting some of mine to roles, this is just the building blocks for that!
EXCELLENT intro. I'm going to start using Ansible for setting up VPSs that I use for personal projects.
outstanding job as always Tim! Your videos truly help with so many scenarios.
I would always see Ansible be mentioned on job applications, along with other qualifications I know I don't have. Seeing this video gave me a little more confidence in tech I've yet to understand. Thank you for that!
Oh brother, I have to say. Thank you for working on your sound quality recently. I just subbed to your channel & watched some of your recent videos aaand being a self-proclaimed audiophile I really do appreciate it. Actually, all you do...Wow! every detail that you go into that others leave out. Nice!!! and Thank You!
him wacking his table has been driving me nuts on headphones!
Thank you so much sir. I was actually not sure why I'm not trying to learn this powerful tool.
Not much experience with Ansible but starting to LOVE it...great video Tim
Thanks Tim for this Ansible tool introduction. I saw your channel yesterday. After watching your video, immediately I liked and subscribed. I have to learn about Ansible and Chef for the CCNA certification.
Woo, finally! I was waiting for you to post an ansible video. Thanks!
No problem! Enjoy!
Awesome video Tim, Thank you sir. I hope you and your family had a great Christmas.
Ansible is so freaking nice. Using it already for my C7000 blade center to setup the 10 blades as a proxmox cluster. Really game-changing âš
Cool, can you share some playbooks? :))
Right on!
I have some in github, PRs welcome! I the description!
Tim, I run a discord server dedicated to home labs and tech talks... you come up often. Seems like everything you're doing perfectly lines up with what we're doing. Thanks for the great content, great presentation, and great explanations.
Thatâs awesome! Thank you so much for taking the time to comment!
thanks dude, cleared up a bunch for me, also your editing was on point gg bro
Hi Tim,
Your videos have a clarity of purpose about them and a method and the way you explain what it is you are working to get across - its top notch stuff.
I confess, I personally struggle to get any enjoyment out of scripting works and similar. It makes huge sense if you run fleets..
Wow, thank you!
Just amazingly simple and instructive
You did it, YES. Thank you. Now I will see what you have to present, I bet it's good as usual. I wish you a happy life!
I appreciate your honesty. Great Video and Thanks a LOT!!!
I appreciate that!
Love your channel man â€ïžâ€ïžâ€ïž & Happy New Year to you and all the people watching this video!
Same to you!
Thanks for the demo and info, have a great day
thank you!
Great video Tim!
I use ansible at work for both on premise, for different tasks on servers pool, and AWS EC2 instances in order to create custom AMI (Amazon machine image) with packer, another great tool.
Good stuff!
Awesome, Thanks again TechnoTim. I really enjoy dabbling with all this.
Glad you enjoy it!
Great video! The best one I found about Ansible. Thanks man!
Glad you liked it!
I did get to the docs with the link you sent thanks for the reply.
I'm trying to learn Ansible since it's part of the Network Automation learning path for Cisco. Their documentation was a bit complex to understand and I would just get bored trying to understand it and eventually the knowledge would slip out of my head. With the way you discussed it, I'm starting to grasp it better now and am actually interested seeing as now I have a better understanding. Thanks.
The developer did a a great job. He's now putting the auto timer config in etc/systemd/system. Added pull to the exec command, will see if it works. I too do not want a 2-way sync, what could possibly go wrong đ . Running both my piholes on bare metal. Tried to run pihole on docker but could not get unbound to work properly. Thanks for shearing: Thumbs Up!
Thank you!
Great video. You're a great teacher.
Great content, as usual!
The way you set the timesync configuration is great for ad-hoc runs, first time setup, or to run when you actually know the file changes. Also keeps it easy for first time learners, good job!
However I strongly believe we should be telling Ansible how we want our systems to be rather then what we want to be done (state vs execution)
If you use Ansible in a "keep state" fashion, the timezone task would unnecessarily restart the service every time you run the playbook.
A different practice would be to have a handler on the template, so it would trigger an action only when the file changes
Also, I'm not entirely sure you really need to stop the service before change the config file. I'm not familiar with timesync but generally you don't need to do that for Linux services, a restart (or reload sometimes) after changing the file is enough.
This is my suggestion on how to do that in an idempotent way:
tasks:
...
...
- name: Copy timesyncd config
template:
src:
dst: /etc/systemd/timesyncd.conf
notify:
- restart timesyncd
handlers:
- name: restart timesyncd
service: systemd-timesyncd
state: restarted
THANK you! I came to the comments to ask about this. Coming from Puppet, Salt, and other configuration management tools, I was genuinely confused.
Nice explanation ... Thank you for the video âïž
Very good introduction!
Nice introduction to Ansible. I've been doing some of these operations (apt update/upgrade, java check and install) automatically with a script language I've created. Writing code gives more flexibility, but also is more error-prone.
Ansible clearly is a good product, and supporting SSH both with key files and passwords is elegant. My homebrewn solution depends on key-files for SSH and updated /etc/sudoers for non-password sudo.
It would be nice if you post more videos about Ansible, and also let me give you an overall thanks for a lot of interesting topics on this channe (proxmox, freeNAS, kubernetes)!
Thank you so much!!
Its so satisfying to see all my VMs updated all at once
Yes!
Great Video! Thanks!
Thanks! Reminded me about VS Code!
I just started to play with SaltStack but after watching this, I think I'm going to switch to Ansible as it seems a better fit for a small home lab and doesn't require agents. Thanks Tim!
Saltstack is a far superior product but , as you said, at small scale it is the more complicated solution.
Take that scale to a couple of datacenters and a few thousand vms and it is a different proposition.
Salt will be much faster at scale vs ansible.
Ansible also is going to be the easier of the two to stand up.
Saltstack supports a closed-loop feedback model via beacons. --- practical example : I need to take some action when a service shuts down unexpectedly. I create a beacon to watch the service . I then create a reactor on the saltstack server that will be triggered when the beacon fires.
Hope you enjoy it!
Awesome video. Would love to see an automation video on Vagrant!
I'm pretty sure Tim knows that he can likely spin up a NTP server and source the tz from there
Thank you! These videos should be included in school curriculums were obviously moving in this direction full speed and these videos for whatever reason makes ansible/kubernetes/lab setup easy to follow and replicate
Thank you!
Great! Thanks a lot. Now i can start this adventure ;))
I would like too take the time say thank you. While 99.9 percent of the people are trying to sell me evething under the sun, you are still offering free advice thank you.
I am working on my own BACnet system on a VM. I realized that I can use tell my compter that it runs a centeral plant will a chiller when it real is just a 15 pressure washer nozzles going up and down to clean the sides of house. I real just need the block logic but to get the ones that run good math on PID switch cost 7500 and that is a old outdated one. Also I want to do is save the planet and reuse olo I/O boards. I leaned most of it but people like you share free information thank you
Thank you! I do have sponsors sometimes to help pay the bills but I choose them wisely and only if I think they are a good fit for my audience. Thank you again!
Nice video Tim I just love your videos they are so usefull :D .
Thank you!
This is a great tutorial. Thanks for the same.
Very clear and concise thank you!!
Thank you!
Thanks man keep such good stuff
Thanks, will do!
i really love that ntp example, i solved this this in a similarway too. One difference i solved it more task based, i set a variable in my hosts file like new_hostname=pihole and in the role i set the path to the configfile to something like this like this src: "{{ new_hostname }}/etc/systemd/timesyncd.conf", which in this example looks in the file folder for the folder pihole ( which it gets from the hostname variable i set and the hostname i declare in playbook or command line ) and then in the subfolders for the file, which allows me to deliver different timesyncd.config files for different clients withtout getting messy in the tasks main.yml cause for each use case or client there is a folderstructure with the correspondent config files =) Never tried to use it on windows, but i manage my root server with its vm's and my local raspberrypis with it. Youre absolutetly right with the ssh keys, not only is it more secure but it makes working with ansible so much more pleasant, especialy if youre in the phase of building roles / tasks / playing, sometimes things fail and having to type the password all the time sucks, keys make that anoyance dissapear, especialy if you want to reach a machine over a bastion host
Ansible isnât only Linux. You can use it on Windows machines too. I love this automation system.
Thank you!
On OS-X too
No yo canât. Not as host
tmux... So many great features. Being able to search through command line output is really nice.
Great video, thank you very much, note to self (nts) watched all of it ,
Have you covered ssh-agent in any videos which mention key-based authentication? That wasn't a tool which was available when I started using ssh years ago, but since I discovered it recently it has transformed my workflow. I can enjoy the "no password" life but still have secure SSH keys!
Solid, to the point video. Rest of the top ansible tutorial results are like as if I am in college and need to sit through unnecessary theory.
Thank you! Thatâs my goal, get you started fast and let you dig in if you want.
Wow this is awesome
One of the most underrated channels in all of YT.
Thank you!
This is a FANTASTIC introduction. Well presented and useful for a quickstart. However, I think it would be super beneficial to briefly talk about Infrastructure as Code concepts and how Ansible adheres to the approach in a follow up. It's one thing to use Ansible in a similar manner to shell scripts. But to make the full use of any config management or IAC tool, it's worth teaching concepts such as idempotency, version control, integration testing, reusable modules, etc.
Great suggestion! I always struggle with how in depth to go and also being pragmatic at the same time. Will find a balance! Thanks for the feedback!
@@TechnoTim Of course! Regardless, I think you do a fantastic job overall. The production and communication is top notch for youtube.
Man, this is super useful
Glad to hear it!
Hecks yeah! Ansible! My take is that even with only 1 test server, Ansible is still worth while. It allows you to get your server into a state where you expect it to be.
Agreed!
Gr8 content, Rundeck combined with ansible a very powerful combination, give rundeck a try too Tim :)
Great suggestion!
Very well done
Thanks đđ simple & to the point
Most welcome đ
Oooo, this will become very useful.
If you're using apt to for a bunch of different machines, I'd recommend using a caching service like apt-cacher-ng on one of your machines. This relieves some network pressure and prevents the same requests for the same package updates. It can even be run from a docker image and found some decent ones on github.
Thanks for the tips!
I love ansible, I have used it for years!!! When you manage about 200 servers it just makes it cake! Also because I like to, I sometimes create adhoc scripts hahaha because why not!
Im a simple guy, I see tim uploaded a new video, I click it
Thank you!
Same
Ditto
Hi Tim, I have a nice example for a playbook that only restarts if the uploaded config file has changed.
name: Restart service when config file is copied
become: true
become_user: root
notify:
- "restart service"
handlers:
- name: "restart service"
service:
- name: "{{ service_name }}"
state: restarted
tasks:
- name: Check if config file has changed
stat:
- path: "{{ config_file }}"
register: config_stat
- name: Restart service if config file has changed
service:
- name: "{{ service_name }}"
state: restarted
when: config_stat.stat.mtime != ansible_date_time.iso8601
great video! thanks
Thnx Tacky Tim
Excellent video, thanx!! Small tip: Yaml files is by convention starting with "- - -"
Thank you!
Actually, the changes you always see is due to stop/start the service: the template file is not copied over if the destination file is exactly the same (that's implied by the Ansible module that performs that check for you). In fact, in your run, when performing the copy task, only a server results as changed because of the file copy (the other ones are not changed, because you had already copied the same file).
Instead of hard-coding in the hosts file the names of the servers you want to access, is it possible to get them dynamically, at run time, from a directory server, if you have one in your network?
awesome, thanks for the vid man
No problem đ
Nice video Tim. You really need to dig into how to create users and upload ssh keys to your remote ubuntu machines with ansible, thats really cool and you dont have to enter passwords and users all the time, ansible commands will become shorter :)
Thanks for the tip! I already automated that too! That was my challenge to people watch the video! I mentioned it in there :)
Cool story bro. I learned a few things
Tacky Tim
Good guide.
Awesome dude đđ»
Thanks âïž
Just subscribed. Love the content. I am still thinking through Ansible vs Bash for this function. The only thing I know right now about Ansible is from your video. I am guessing there are some benefits of Ansible I am missing, but just from this video I am thinking Bash would be the most straightforward way to do it.
Thank you! Ansible has modules that work across operating systems, it can validate and set desired state, prevent config drift, and remote execute. There are plenty more features.
@@TechnoTim Thanks! I figured I was missing something and now I know!
Finally Ansible!!! Could you please make a tutorial about jenkins as well? In particualr, how to use jenkins to make docker image automatically whenever there is a new git commit.
I don't have one yet for Jenkins but I have one for GitLab CI (that is very similar to Drone)
@@TechnoTim Ansible with Jenkins combined together forms a really powerful tool for automation purposes! Looking forward to more automation videos xD
Hi Tim, thanks for the content. please I need help with configuring a mail server and testing if it works. I have successfully provisioned the server using Terraform and I can configure it manually but I'm struggling to do it with Ansible for a large scale deployment. please any tips or pointers would be greatly appreciated. thanks
An update on usage. Not sure why but the ansible ping wouldn't work. The following worked for me on Arch Linux "ansible -i -m ping .... " i.e. the group name needs to come after the module.
Hello, how can we schedule a job to run 3 times in a day with ansible tower scheduler??
Would you please make a video on setting up ssh keys with ansible?
Great Stuff! I do wonder if you would explain how to customize Ubuntu Server Network interface like updating from DHCP to STATIC IP? Thank you!
I have a question. How VScode file is recognized by Linuc machine? Is it because you are using WSL so you can see the files on the desktop?
Can you use this to schedule your apt updates and upgrades?
wow this is amazing
Thank you!
6 month later, i learning about this XD
cool af..
have trouble to setup kubernetes using ansible, I automate server setup and unit test it using molecule
the muted background music was a nice touch
Techno Tony is coming for your audio Techno Tim.