Project Atomic hosts are built from standard RPM packages which have been composed into filesystem trees using rpm-ostree. This post provides method for automation of Building Atomic host (Creating new trees).
Requirements
- Fedora Atomic QCOW2 Image : Fedora-Atomic.
- Make sure that Ansible is installed on your system. Note that I am using Fedora-Workstation.
Process
Clone the Git repo on your working machine Build-Atomic-Host.
$ git clone https://github.com/trishnaguha/build-atomic-host.git $ cd build-atomic-host
Create VM from the QCOW2 Image
The following creates VM from QCOW2 Image where username is atomic-user
and password is atomic
. Here atomic-node
in the instance name.
$ sudo sh create-vm.sh atomic-node /path/to/fedora-atomic25.qcow2 # For example: /var/lib/libvirt/images/Fedora-Atomic-25-20170131.0.x86_64.qcow2
Start HTTP Server
The tree is made available via web server. The following playbook creates directory structure, initializes OSTree repository and starts the HTTP server.
$ ansible-playbook httpserver.yml --ask-sudo-pass
Use ip addr
to check IP Address of the HTTP server.
Give OSTree a name and add HTTP Server IP Address
Replace the variables given in vars/atomic.yml with OSTree name and HTTP Server IP Address.
For Instance:
# Variables for Atomic host atomicname: my-atomic httpserver: 192.168.122.1
Here my-atomic
is OSTree name and 192.168.122.1
is HTTP Server IP Address.
Run Main Playbook
The following playbook installs requirements, starts HTTP Server, composes OSTree, performs SSH-setup and rebases on created Tree.
$ ansible-playbook main.yml --ask-sudo-pass
Check IP Address of the Atomic instance
The following command returns the IP Address of the running Atomic instance
$ sudo virsh domifaddr atomic-node
Reboot
Now SSH to the Atomic Host and reboot it so that it can reboot in to the created OSTree:
$ ssh atomic-user@<atomic-hostIP> $ sudo systemctl reboot
Verify: SSH to the Atomic Host
Wait for 10 minutes, You may want to go for a Coffee now.
$ ssh atomic-user@192.168.122.221 [atomic-user@atomic-node ~]$ sudo rpm-ostree status State: idle Deployments: ● my-atomic:fedora-atomic/25/x86_64/docker-host Version: 25.1 (2017-02-07 05:34:46) Commit: 15b70198b8ec7fd54271f9672578544ff03d1f61df8d7f0fa262ff7519438eb6 OSName: fedora-atomic fedora-atomic:fedora-atomic/25/x86_64/docker-host Version: 25.51 (2017-01-30 20:09:59) Commit: f294635a1dc62d9ae52151a5fa897085cac8eaa601c52e9a4bc376e9ecee11dd OSName: fedora-atomic
Now you have the Updated Tree.
Shout-Out for the following folks:
- Gerard Braad who mentored me for the project.
- Jonathon Lebon who demonstrated Building Atomic host workshop in DevConf.CZ, 2017 at Brno. His slides are here: jlebon-devconf-slides.
My future post will have customizing packages (includes addition/deletion) for OSTree.
[…] Automate Building your Own Atomic Host […]
LikeLike
[…] earlier post automate-building-your-own-atomic-host describes how to Automate building Atomic Host with Ansible. But it is not capable of customizing […]
LikeLike
[…] earlier post automate-building-your-own-atomic-host describes how to Automate building Atomic Host with Ansible. But it is not capable of customizing […]
LikeLike
You actually make it seem so easy together with your presentation however I find this topic to be actually something which I feel I would never understand. It seems too complex and extremely huge for me. I am having a look ahead to your subsequent put up, I’ll try to get the dangle of it!
LikeLike
I am now not sure where you are getting your information, but great topic. I needs to spend a while finding out much more or working out more. Thank you for fantastic info I used to be on the lookout for this info for my mission.
LikeLike