Hello!
>> You use Docker, from what I understand.
--->> I do use Docker in my Homelab, yes. Currently, I have the following containers running:
------>> My internal "Dashboard" - "Homepage" (
https://gethomepage.dev/)
------>> Docker Update utility - "What's Up Docker" (
https://getwud.github.io/wud/)
------>> Plex Metrics (
https://docs.linuxserver.io/images/docker-tautulli/)
------>> TV Show NZB Client - Sonarr (
https://docs.linuxserver.io/images/docker-sonarr/)
------>> NZB Download Agent - Sabnzb (
https://docs.linuxserver.io/images/docker-sabnzbd/)
------>> Torrent Download Client - Transmission (
https://docs.linuxserver.io/images/docker-transmission/)
------>> Movie NZB Client - Radarr (
https://docs.linuxserver.io/images/docker-radarr/)
------>> Music NZB Client - Lidarr (
https://docs.linuxserver.io/images/docker-lidarr/)
------>> Movie Download Client - Radarr << hallmark-radarr >>, this one setup specifically to download Hallmark Channel movies
------>> Plex Requests Client - OMBI (
https://docs.linuxserver.io/images/docker-ombi/)
------>> Speedtest.net downloads client and DB trackr - Speedtest-Tracker (
https://docs.linuxserver.io/images/docker-speedtest-tracker/)
>> You are a senior Linux admin, and I assume you are working with Ansible
--->> I am a Senior Automation Engineer working at APS (Arizona Power Company). I work exclusively with Ansible and Python. I work within the "Ansible Automation Platform", and APS (as well as many (most?) Enterprises) are deeply entrenched in the RedHat ecosystem.
>> to automate something that has to do with Linux servers.
--->> Yes, currently, our entire VM provisioning process is handled entirely in Ansible Playbooks -- and for the entirety of 2024, I was the lead developer on our effort to Automate the VM Provisioning process in Azure. Before our work, it would take the Azure team (two people) "about an hour or so" to create a VM ready for production -- this was an entirely manual process that made consistency very difficult from VM to VM. I am very proud to say that we've taken this "About an hour" Unicorn process in Azure to a 15-20 minute process that creates a production-ready Azure VM (proud papa spouting!).
>> I am a semi-retired old guy who is a PHP developer. I use Ubuntu to
>> create local web servers for testing and development of PHP. I'm a
>> little rusty since I am just now taking the leap from CentOS to Ubuntu
>> for LAMP web servers. This requires PHP-FPM. I'm also a little rusty
>> with PHP since I have not done any real programming in several years.
>> Given my station, please tell me several things:
>> 1) How do I benefit from using Docker?
--->> My intention to show the Nginx/PHP demo showed that you can "ignore" all the non-php-related stuff and still have a solid development environment. At a minimum, it would allow you to speed up your PHP development because you wouldn't need to "worry" about all the naggy L*MP stuff. You could easily spin up a Nginx/PHP container (as in my demo), but you could have several containers, each targeting a different version of PHP to ensure backward (and forward) compatibility, and maybe test different configurations to see what benefits your application the best.
>> 2) How do I benefit from using Ansible?
--->> I use Ansible for all* (most) of my homelab configurations. This includes an Ansible Playbook that uses a JINJA Template to configure Docker Compose files consistently.
--->> The Docker Playbook does the following:
------>> name: Ensure the directory exists
------>> path: "/opt/apps/{{ container_name }}"
------>> name: Ensure the Data directory exists
------>> path: "/opt/apps/{{ container_name }}/data"
------>> name: Ensure the backup directory exists
------>> path: "/opt/backup/containers/{{ container_name }}"
------>> name: Create the downloads directory
------>> path: "/opt/apps/downloads/{{ container_name }}/"
------>> name: Create the Compose File (from a JINJA template)
------>> dest: "/opt/apps/{{ container_name }}/{{ container_name }}-compose.yml"
------>> name: Insert block of text in the WhatsUpDocker file so it knows to monitor it for updates
>> 3) How would I use Ansible as a PHP developer?
--->> It could easily create a consistent development environment for you, execute a single playbook, and conjure docker containers with all your settings. Alternatively, you can set a bare VM and use Ansible to configure *EVERYTHING* to get started.
>> 4) What is the learning curve for Docker for someone like me?
--->> It is just another part of the technical puzzle, so if you struggle to onboard new technologies, much of Docker might be hard for you. Still, if you're the kind that can spend an afternoon reading a manual or watching some "NetworkChuck" videos on YouTube before you "get the gist," it'll probably come quickly. I "forced" myself into docker in 2023 after being staunch VMWare "a-VM-for-every-appliction." I paid $7xx for my own vSphere/vCenter license and was doing that for many years. I bought a cheap-refurbished DELL r530 1U server specifically to be my "Docker Host" while I worked through the trenches of "Figuring out" Docker. It turned out to be extremely simple (for me), and within 30 days, I had completely converted from my "a-VM-for-every-appliction" mindset over to a "container-for-everything" approach.
>> 5) What is the learning curve for Ansible for someone like me?
--->> So, I think "Ansible" itself is the "easiest-to-onboard" automation technology I've worked with. I've worked with Puppet (yuk!), Chef (vomit!), and now Ansible (yum!). It is based on YAML, which is very simple to get the hang of. I knew nothing of YAML but had figured out the basics in a weekend. I've built on "the basics" since I started with it in 2020. At its core, Ansible is based on Python, which also makes it easy (
I'm a huge fan of Python, and I utterly despise and hate "Ruby").
I'm happy to help anyone get on board with the basics of Docker and/or Ansible. Just let me know!