--- - name: mount fs include: "mount_fs.yml" - name: setup networking include: "network.yml" - name: add packages for copr backend yum: state=present name={{ item }} enablerepo="updates-testing" with_items: - copr-backend - python-novaclient - python-glanceclient - python-neutronclient - python-keystoneclient - obs-signd # TODO: remove, since it will be installed as dependency by copr-backend - redis # we need this to start the service in next step - python-futures # remove when new version of copr-backend will be released - name: make copr dirs file: state=directory path={{ item }} with_items: - /var/lib/copr/jobs - /var/lib/copr/public_html/results - name: Umask results command: /usr/bin/umask 0000 chdir=/var/lib/copr/public_html/results - name: setup dirs there file: state=directory path="/home/copr/{{ item }}" owner=copr group=copr mode=0700 with_items: - cloud - .ssh - name: add copr-buildsys keys to copr user path copy: src="{{ item }}" dest=/home/copr/cloud/ owner=copr group=copr mode=0600 with_fileglob: - "{{ private }}/files/openstack/copr-copr/*" - name: setup privkey for copr user copy: src="{{ private }}/files/copr/buildsys.priv" dest=/home/copr/.ssh/id_rsa owner=copr group=copr mode=600 - name: setup copr user ssh config file copy: src="ssh_config" dest=/home/copr/.ssh/config owner=copr group=copr mode=600 - name: check known_hosts file command: stat /home/copr/.ssh/known_hosts register: hostsstat always_run: yes changed_when: "1 != 1" ignore_errors: yes - name: create empty known_hosts file: state=touch dest=/home/copr/.ssh/known_hosts owner=copr group=copr mode=600 when: hostsstat.rc == 1 - name: replace bashrc for copr user copy: src="copr_bashrc" dest=/home/copr/.bashrc owner=copr group=copr mode=600 - name: auth_key so we can login to localhost as the copr user from the copr user authorized_key: user=copr key="{{ item }}" no_log: True with_file: - "provision/files/buildsys.pub" - name: copy keystonerc template: src="keystonerc" dest=/root/ owner=root group=root mode=600 when: not devel - name: copy .boto file copy: src="boto" dest=/home/copr/.boto owner=copr group=copr # setup webserver - name: add config for copr-repo path copy: src="{{ _lighttpd_conf_src }}" dest=/etc/lighttpd/lighttpd.conf owner=root group=root mode=0644 notify: - restart lighttpd - name: install certificates for production when: not devel include: "install_certs.yml" - name: allow lighttpd set fds limit seboolean: name=httpd_setrlimit state=yes persistent=yes - name: create directory for compress module of lighttpd file: path=/var/cache/lighttpd/compress owner=lighttpd group=lighttpd mode=0644 state=directory # mime default to text/plain and enable dirlisting for indexes - name: update lighttpd configs copy: src="lighttpd/{{ item }}" dest="/etc/lighttpd/conf.d/{{ item }}" owner=root group=root mode=0644 with_items: - dirlisting.conf - mime.conf notify: - restart lighttpd - name: start webserver service: state=running enabled=yes name=lighttpd # setup dirs for the ansible execution off of provisioning #- name: dirs from provision # file: state=directory path="/home/copr/provision/{{ item }}" owner=copr group=copr # with_items: # - action_plugins # - library # tags: # - provision_config - name: put ansible.cfg for all this into /etc/ansible/ on the system copy: src="provision/ansible.cfg" dest=/etc/ansible/ansible.cfg tags: - provision_config - name: put provisioning files # synchronize doesn't work at lockbox due to some rsync/scp error, todo: revert when resolved # synchronize: src="provision/files/" dest="/home/copr/provision/files/" copy: src="provision" dest="/home/copr/" owner=copr group=copr tags: - provision_config - name: put some files into the provision subdir template: src="provision/nova_cloud_vars.yml" dest="/home/copr/provision/nova_cloud_vars.yml" owner=copr group=copr tags: - provision_config - name: put fedpkg-copr.conf into the provision files template: src="provision/fedpkg-copr.conf" dest="/home/copr/provision/files/fedpkg-copr.conf" owner=copr group=copr - name: testing fixture copy: dest="/home/copr/cloud/ec2rc.variable" content="" when: devel - name: copy copr-be.conf template: src="copr-be.conf.j2" dest=/etc/copr/copr-be.conf owner=root group=copr mode=640 notify: - restart copr-backend tags: - config - name: copy sign.conf template: src=sign.conf dest=/etc/sign.conf owner=root group=copr mode=640 tags: - config - name: copy logstash config template: src=logstash.d/copr_backend.conf dest=/etc/logstash.d/copr_backend.conf owner=root group=copr notify: - restart logstash - name: get owner for results dir stat: path=/var/lib/copr/public_html register: copr_results_dir_st - name: change owner for results dir if it isn't copr shell: "chown -R copr:copr /var/lib/copr/public_html" when: copr_results_dir_st.stat.pw_name != "copr" - command: "ls -dZ /var/lib/copr/public_html/" register: public_html_ls - name: update selinux context for results if root folder does not have proper type command: "restorecon -vvRF /var/lib/copr/public_html/" when: public_html_ls is defined and 'copr_data_t' not in public_html_ls.stdout - name: install cert to access fed-cloud09 # TODO: remove this when fed-cloud09 receives external cert include: install_cloud_cert.yml - name: set acl for logstash to access httpd logs acl: name=/var/log/lighttpd entity=logstash etype=user permissions=rx state=present - name: enable and run copr-backend services service: name="{{ item }}" enabled=yes state=running with_items: - redis # TODO: .service in copr-backend should depend on redis - logstash - copr-backend - copy: src="cleanup_vm_nova.py" dest=/home/copr/ mode=755 - copy: src="cleanup_vms.sh" dest=/etc/cron.hourly/copr_cleanup_vms.sh mode=755 - copy: src="cron/restart_logstash.sh" dest=/etc/cron.hourly/restart_logstash.sh mode=755 #- name: copy delete-forgotten-instances.pl # copy: src="delete-forgotten-instances.pl" dest=/home/copr/delete-forgotten-instances.pl mode=755 #- name: copy delete-forgotten-instances.cron # copy: src="delete-forgotten-instances.cron" dest=/etc/cron.daily/delete-forgotten-instances owner=root group=root mode=755 # when: not devel #- name: install script to kill VMs in error state # copy: src="instant-instance-killer.sh" dest="/root/" #- cron: name="kill VMs in error state" minute="*/15" job="/root/instant-instance-killer.sh" # when: not devel - name: setup monitoring include: "monitoring.yml"