--- - 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 notify: restart dhcp-relay - 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"