compass-install/install/roles/cobbler/tasks/docker.yml

132 lines
4.0 KiB
YAML

---
- name: install mkisofs
yum: pkg=mkisofs state=installed
when: ansible_os_family == "Redhat"
- name: install mkisofs in debian
apt: pkg=mkisofs state=installed
when: ansible_os_family == "Debian"
- name: clean up docker directory
file: path=~/docker-cobbler/{{ item }} state=absent
with_items:
- Dockerfile
- files
- name: clean up log directory
file: path=/var/log/cobbler state=absent
- name: create directory for docker and files
file: path=~/docker-cobbler/files state=directory
- name: create directories for images
file: path=~/docker-cobbler/images/{{ item }} state=directory
with_items:
- "{{ centos }}"
- "{{ ubuntu }}"
- "{{ ubuntu_1404 }}
- name: download images
get_url: url={{ item.name }} dest=/tmp/{{ item.filename }} mode=0644
with_items:
- { name: "{{ centos_url }}", filename: "{{ centos }}.iso" }
- { name: "{{ ubuntu_url }}", filename: "{{ ubuntu }}.iso" }
- { name: "{{ ubuntu_1404_url }}", filename: "{{ ubuntu_1404 }}.iso" }
- name: mount info
command: mount
register: mount_info
- name: mount images
shell: mount -o loop /tmp/{{ item }}.iso ~/docker-cobbler/images/{{ item }}
# mount: name=~/docker-cobbler/images/{{ item }} src=/tmp/{{ item }}.iso opts=loop fstype=iso9660 state=mounted
with_items:
- "{{ centos }}"
- "{{ ubuntu }}"
- "{{ ubuntu_1404 }}"
when: mount_info.stdout.find('CentOS') == -1
- name: copy Dockerfile to ~/docker-cobbler
template: src=Dockerfile.j2 dest=~/docker-cobbler/Dockerfile mode=0644
- name: copy dhcp.template
template: src=dhcp.template.j2
dest=~/docker-cobbler/files/dhcp.template
mode=0644
- name: copy named.template
template: src=named.template.j2
dest=~/docker-cobbler/files/named.template
mode=0644
- name: copy start script
template: src=start.sh.j2
dest=~/docker-cobbler/files/start.sh
mode=0755
- name: copy post sync script
template: src=fix_ks_server.py.j2
dest=~/docker-cobbler/files/fix_ks_server.py
mode=0755
- name: copy admin key
copy: src={{ shared_dir }}/keys/admin.pem
dest=~/docker-cobbler/files/admin.pem
mode=0644
when: "'chef' in {{ pkg_installer }}"
- name: copy chef validator key
copy: src={{ shared_dir }}/keys/chef-validator.pem
dest=~/docker-cobbler/files/chef-validator.pem
mode=0644
when: "'chef' in {{ pkg_installer }}"
- name: cobbler container?
command: docker ps -a
register: containers
- name: remove cobbler container if any
shell: docker rm -f cobbler-dev
when: containers.stdout.find('cobbler-dev') != -1
- name: check if 'cobbler' image already exists
command: docker images cobbler
register: image
- name: remove image 'cobbler' if it exists and --rebuild is specified
shell: docker rmi -f cobbler
when: image.stdout.find('cobbler') != -1 and rebuild
- name: restart docker daemon if debian
service: name=docker state=restarted
when: ansible_os_family == "Debian"
- name: build a docker image for cobbler
shell: docker build -t cobbler ~/docker-cobbler
when: image.stdout.find('cobbler') == -1 or rebuild
- name: fork image and run a new cobbler container
shell: docker run --name=cobbler-dev -d {{ cobbler_port_mapping }} {{ image_volume_mapping }} -i -t cobbler
- name: extract cobbler ip info
shell: echo `docker inspect cobbler-dev | awk -F '"' '/IPAdd/ {print $4}'` > /tmp/ip
- name: quote the ip first
shell: echo `sed 's/\(.*\)/"\1"/g' /tmp/ip` > /tmp/dynamic.yml
- name: add cobbler_docker_ip before cobbler ip
shell: "echo `sed '/^/ s/^/cobbler_docker_ip: /' /tmp/dynamic.yml` > /tmp/dynamic.yml"
- name: write cobbler_ip to local var
fetch: src=/tmp/dynamic.yml dest={{ shared_dir }}/dynamic.yml mode=0644 flat=yes
- name: include cobbler dynamic vars
include_vars: "{{ shared_dir }}/dynamic.yml"
- include: dhcp-relay-redhat.yml
when: ansible_os_family == "Redhat"
- include: dhcp-relay-debian.yml
when: ansible_os_family == "Debian"