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

322 lines
9.2 KiB
YAML

---
- name: install base packages
yum: name={{ item }} state=present
with_items:
- wget
- git
- name: check epel presence
command: rpm -q epel-release
register: epel_presence
ignore_errors: yes
- name: check atomic repo presence
command: rpm -q atomic-release
register: atomic_presence
ignore_errors: yes
#- name: get epel version
# command: >
# wget -q {{ epel_base_url }} -O - | grep -oE "(href=\"epel-release-6-[0-9,.].*)" | cut -d\" -f2
# register: epel_file_name
# when: epel_presence.rc != 0
- name: install epel
yum: name={{ epel_base_url }}/{{ epel_file_name }} state=present
when: epel_presence.rc != 0
- name: install atomic repo
yum: name={{ atomic_base_url }}/{{ atomic_file_name }} state=present
when: atomic_presence.rc != 0
- name: yum update
yum: name=* state=latest update_cache=yes
- name: install related packages
yum: name={{ item }} state=present
with_items:
- cobbler
- cobbler-web
- createrepo
- mkisofs
- syslinux
- debmirror
- pykickstart
- cman
- bind
- rsync
- dhcp
- xinetd
- tftp-server
- gcc
- httpd
- libselinux-python
- name: turn off iptables
service: name=iptables state=stopped enabled=no
- name: replace config files
copy: src={{ item.name }} dest={{ item.dest }}
with_items:
- { name: rsync, dest: /etc/xinetd.d/rsync }
- { name: debmirror.conf, dest: /etc/debmirror.conf }
- name: restart xinetd service
service: name=xinetd state=restarted enabled=yes
- name: configure interface for dhcp
command: ifconfig {{ mgmt_nic }}:1 {{ mgmt_next_ip }} netmask {{ mgmt_subnet_mask }}
when: not mgmt_ip_same
- name: copy httpd configuration files
file: src={{ item }} dest=/etc/httpd/conf.d/{{ item }} mode=0644
with_items:
- cobbler_web.conf
- ssl.conf
notify:
restart httpd
- name: disable selinux
selinux: state=disabled
- name: disable selinux real time
shell: echo 0 > /selinux/enforce
- name: copy cobbler configuration files
template: src={{ item.name }} dest=/etc/cobbler/{{ item.file_name }} mode=0644
with_items:
- { name: tftpd.template, file_name: tftpd.template }
- { name: modules.conf, file_name: modules.conf }
- { name: dhcp.template.nodocker.j2, file_name: dhcp.template }
- { name: named.template.nodocker.j2, file_name: named.template }
- { name: settings.j2, file_name: settings }
notify:
- restart cobbler
- cobbler sync
- meta: flush_handlers
- name: clone snippets
git: repo={{ compass_adapter_source }}
dest=/opt/compass-adapters
version={{ compass_adapter_version }}
update=yes
force=yes
- name: remove old cobbler folders
shell: rm -rf path=/var/lib/cobbler/{{ item }}
with_items:
- snippets
- scripts
- triggers
- kickstarts
- name: create cobbler folders
file: path=/var/lib/cobbler/{{ item }} state=directory mode=0755
with_items:
- snippets
- scripts
- triggers
- kickstarts
- name: copy snippets to cobbler folder
shell: cp -rf /opt/compass-adapters/cobbler/{{ item }}/* /var/lib/cobbler/{{ item }}/
with_items:
- snippets
- scripts
- triggers
- kickstarts
notify:
cobbler sync
- name: change snippets mode
file: path=/var/lib/cobbler mode=0755 recurse=yes
- name: create cblr_ks folder
file: path=/var/www/cblr_ks mode=0755 state=directory
- name: change kickstart mode
file: path=/var/lib/cobbler/kickstarts mode=0666 recurse=yes
- name: disable selinux
selinux: state=disabled
- name: disable selinux real time
command: echo 0 > /selinux/enforce
- name: clean cobbler log folder
file: path=/var/log/cobbler state=absent
- name: create cobbler log directories
file: path={{ item }} mode=0777 state=directory recurse=yes
with_items:
- /var/log/cobbler
- /var/log/cobbler/anamon
- /var/log/cobbler/tasks
- name: create cobbler ppa repo dir
file: path=/var/lib/cobbler/repo_mirror/{{ item.ppa_repo_name }}/conf
state=directory
mode=0644
recurse=yes
with_items: distros
- name: copy distributions to ubuntu ppa repo
template: src=distributions
dest=/var/lib/cobbler/repo_mirror/ubuntu_12_04_ppa_repo/conf/distributions
mode=0644
when: ubuntu_1204 in distros
- name: copy distribution to ubuntu 14.04 ppa repo
template: src=distributions
dest=/var/lib/cobbler/repo_mirror/ubuntu_14_04_ppa_repo/conf/distributions
mode=0644
when: ubuntu_1404 in distros
- name: start cobbler and httpd services
service: name={{ item }} state=restarted enabled=yes
with_items:
- httpd
- cobblerd
- name: download ppa repo images
get_url: url={{ item.ppa_lab_url }} dest=/var/lib/cobbler/repo_mirror/{{ item.ppa_repo_name }}.tar.gz
with_items: distros
when: region == "lab"
- name: download ppa repo images
get_url: url={{ item.ppa_us_url }} dest=/var/lib/cobbler/repo_mirror/{{ item.ppa_repo_name }}.tar.gz
with_items: distros
when: region == "us"
- name: untar ppa repo images
unarchive: src=/var/lib/cobbler/repo_mirror/{{ item.ppa_repo_name }}.tar.gz
dest=/var/lib/cobbler/repo_mirror/
copy=no
with_items: distros
- name: add repos
command: cobbler repo add --name {{ item.ppa_repo_name }} --mirror=/var/lib/cobbler/repo_mirror/{{ item.ppa_repo_name }} --mirror-locally=Y --arch=x86_64
with_items: distros
args:
creates: /opt/repo_added.txt
ignore_errors: yes
run_once: True
- name: remove ubuntu default repo
command: cobbler repo remove --name {{ item }}
with_items:
- "{{ ubuntu }}"
- "{{ ubuntu_1404 }}"
ignore_errors: yes
- name: cobbler repo sync
command: cobbler reposync
- name: download loader files
get_url: url={{ cobbler_loaders_url }} dest=/var/lib/cobbler/
- name: untar loaders file
unarchive: src=/var/lib/cobbler/loaders.tar.gz dest=/var/lib/cobbler/
copy=no
- name: cobbler get loaders
command: cobbler get-loaders
- name: create directory for images
file: path=/var/lib/cobbler/iso state=directory
- name: download images
get_url: url={{ item.iso_lab_url }} dest=/var/lib/cobbler/iso/{{ item.name }}.iso mode=0644
with_items: distros
when: region == "lab"
- name: download images
get_url: url={{ item.iso_us_url }} dest=/var/lib/cobbler/iso/{{ item.name }}.iso mode=0644
with_items: distros
when: region == "us"
- name: mount_info
command: mount
register: mount_info
- name: create mount point
file: name=/mnt/{{ item.name }} state=directory
with_items: distros
when: mount_info.stdout.find('CentOS') == -1 and mount_info.stdout.find('Ubuntu') == -1
ignore_errors: yes
- name: mount images
shell: mount -o loop /var/lib/cobbler/iso/{{ item.name }}.iso /mnt/{{ item.name }}
with_items: distros
when: mount_info.stdout.find('CentOS') == -1 and mount_info.stdout.find('Ubuntu') == -1
args:
creates: /opt/image_mounted.txt
ignore_errors: yes
run_once: True
- name: import distros
command: cobbler import --path=/mnt/{{ item.name }} --name {{ item.name }} --arch=x86_64 --kickstart=/var/lib/cobbler/kickstarts/default.ks --breed={{ item.breed }}
with_items: distros
args:
creates: /opt/distro_imported.txt
ignore_errors: yes
run_once: True
#- name: add profiles
# command: cobbler profile add --name={{ item.name }} --repo={{ item.ppa_repo_name }} --distro={{ item.name }} --ksmeta="tree=http://{{ mgmt_next_ip }}/cobbler/ks_mirror/{{ item.name }}" --kickstart=/var/lib/cobbler/kickstarts/{{ item.kickstart }} --kopts="{{ item.kopts }}"
# with_items: distros
# args:
# creates: /opt/profile_added.txt
# ignore_errors: yes
# run_once: True
- name: generate public key file for ssh
template: src=id_rsa.pub.j2 dest=/var/lib/cobbler/id_rsa.pub
when: push_ssh_key is defined
- name: generate ssh key for root
user: name=root generate_ssh_key=yes ssh_key_bits=2048 ssh_key_file=.ssh/id_rsa
when: push_ssh_key is not defined
- name: edit profiles
shell: cobbler profile edit --name={{ item.name }} --repo={{ item.ppa_repo_name }} --distro={{ item.name }} --ksmeta="tree=http://{{ mgmt_next_ip }}/cobbler/ks_mirror/{{ item.name }}" --kickstart=/var/lib/cobbler/kickstarts/{{ item.kickstart }} --kopts="{{ item.kopts }}"
with_items: distros
- name: edit profiles with push ssh key option
shell: cobbler profile edit --name={{ item.name }} --repo={{ item.ppa_repo_name }} --distro={{ item.name }} --ksmeta="tree=http://{{ mgmt_next_ip }}/cobbler/ks_mirror/{{ item.name }} push_ssh_keys=/var/lib/cobbler/id_rsa.pub" --kickstart=/var/lib/cobbler/kickstarts/{{ item.kickstart }} --kopts="{{ item.kopts }}"
with_items: distros
when: push_ssh_key is defined
- name: remove ubuntu default repo
command: cobbler repo remove --name {{ item }}
with_items:
- "{{ ubuntu }}"
- "{{ ubuntu_1404 }}"
ignore_errors: yes
- name: cobbler repo sync again
shell: cobbler reposync
- name: cobbler sync
shell: cobbler sync
- name: restart xinetd
service: name=xinetd state=restarted
- name: restart dhcpd
service: name=dhcpd state=restarted enabled=yes
- name: cobbler check
shell: cobbler check
- name: get all systems
shell: cobbler system list
register: cobbler_systems
- name: remove all systems
shell: cobbler system remove --name {{ item }}
with_items: cobbler_systems.stdout_lines
when: cobbler_systems and test is defined and test == True