123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- # Copyright 2021 Dell Inc. or its subsidiaries. All Rights Reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- ---
- - name: Initial cobbler setup
- hosts: localhost
- connection: local
- gather_facts: false
- tasks:
- - name: Inside cobbler container
- debug:
- msg: "Hiii! I am cobbler"
- - name: Make
- command: make rpms
- args:
- chdir: /cobbler
- changed_when: false
- - name: Install cobbler and cobbler-web
- command: dnf install -y cobbler-3.2.2-1.el8.noarch.rpm cobbler-web-3.2.2-1.el8.noarch.rpm
- args:
- chdir: /cobbler/rpm-build
- changed_when: false
-
- - name: Run script
- shell: sh ./mkgrub.sh
- args:
- chdir: /usr/share/cobbler/bin
- changed_when: false
- - name: Add load_wsgi
- blockinfile:
- state: present
- insertbefore: '# LoadModule foo_module modules/mod_foo.so'
- dest: /etc/httpd/conf/httpd.conf
- block: |
- LoadModule wsgi_module modules/mod_wsgi_python3.so
- LoadModule proxy_module modules/mod_proxy.so
- - name: Cobbler web
- blockinfile:
- state: present
- insertafter: '^<VirtualHost '
- path: /etc/httpd/conf.d/cobbler_web.conf
- block: |
- ServerName localhost
- SSLEngine on
- SSLCipherSuite PROFILE=SYSTEM
- SSLCertificateFile /etc/pki/tls/certs/localhost.crt
- SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
- - name: Add settings to http
- shell: echo "LoadModule wsgi_module modules/mod_wsgi_python3.so" >/etc/httpd/conf.d/wsgi.conf
- changed_when: false
- - name: Enable cobbler
- command: systemctl enable {{ item }}
- with_items:
- - cobblerd
- - tftp
- changed_when: false
- - name: Restart httpd
- service:
- name: "{{ item }}"
- state: restarted
- loop:
- - httpd
- - cobblerd
- - name: Start services
- service:
- name: "{{ item }}"
- state: started
- loop:
- - cobblerd
- - tftp
- - name: Adding curl
- shell: export PATH="/usr/bin/curl:$PATH"
- - name: Run import command
- command: cobbler import --arch=x86_64 --path=/mnt --name="{{ name_iso }}"
- changed_when: false
- - name: Kickstart profile - centos
- copy:
- src: "/root/centos7.ks"
- dest: "/var/lib/cobbler/templates/sample.ks"
- mode: 0775
- tags: install
- when: name_iso == "centos"
- - name: Kickstart profile - rocky
- copy:
- src: "/root/rocky8.ks"
- dest: "/var/lib/cobbler/templates/sample.ks"
- mode: 0775
- tags: install
- when: name_iso == "rocky"
- - name: Pxe menu
- copy:
- src: "/root/omnia/control_plane/roles/provision_cobbler/files/menu.yml"
- dest: "/etc/cobbler/boot_loader_conf/pxedefault.template"
- mode: 0775
- tags: install
- - name: Assign default grub option
- replace:
- path: "/var/lib/cobbler/grub_config/grub/grub.cfg"
- regexp: "^set default=\'local\'"
- replace: "set default=\'1\'"
- tags: install
- - name: Assign default grub timeout
- replace:
- path: "/var/lib/cobbler/grub_config/grub/grub.cfg"
- regexp: '^set timeout=80'
- replace: 'set timeout=10'
- tags: install
- - name: Syncing of cobbler
- command: cobbler sync
- changed_when: false
- - name: Restart cobblerd, http, xinetd and dhcpd
- service:
- name: "{{ item }}"
- state: restarted
- loop:
- - cobblerd
- - httpd
- - xinetd
- - dhcpd
- - name: Fetch ansible-playbook path
- command: whereis ansible-playbook
- changed_when: false
- register: ansible_playbook_path
- - name: Add tftp cron job
- cron:
- name: Start tftp service
- minute: "*"
- job: "{{ ansible_playbook_path.stdout.split(' ')[1] }} /root/tftp.yml"
- - name: Add inventory cron job
- cron:
- name: Create inventory
- minute: "*/5"
- job: "{{ ansible_playbook_path.stdout.split(' ')[1] }} /root/inventory_creation.yml"
|