--- - name: "Install Openbook" hosts: target tasks: - name: "Install network tools" apt: pkg: "{{ item }}" state: present with_items: - netcat-openbsd - lsof when: ansible_distribution == "Ubuntu" - name: "Install network tools" yum: name: "{{ item }}" state: present with_items: - nmap-ncat - lsof when: ansible_distribution == "RedHat" or ansible_distribution == "CentOS" - name: "Install network tools" portage: package: "{{ item }}" update: yes changed_use: yes with_items: - net-analyzer/netcat - sys-process/lsof when: ansible_distribution == "Gentoo" - name: "Write hosts entry" lineinfile: dest: /etc/hosts regexp: "{{ item.regexp }}" line: "{{ item.line }}" with_items: - { regexp: '^127\.0\.0\.1.*$', line: "127.0.0.1 localhost {{ ansible_nodename }}" } - name: "Create Openbook directories" file: path: "{{ item.path }}" state: directory mode: "{{ item.mode }}" with_items: - { path: /opt/openbook/database, mode: "0755" } - { path: /opt/openbook/job_scheduler_server, mode: "0755" } - { path: /opt/openbook/workflow_server, mode: "0755" } - { path: /opt/openbook/admin_api_server, mode: "0755" } - { path: /opt/openbook/customer_api_server, mode: "0755" } - { path: /opt/openbook/admin_web_ui, mode: "0755" } - { path: /opt/openbook/customer_web_ui, mode: "0755" } - { path: /etc/openbook/database/conf.d, mode: "0755" } - { path: /etc/openbook/database/bin, mode: "0755" } - { path: /var/lib/mysql, mode: "0777" } - { path: /var/log/mysql, mode: "0777" } - { path: /etc/openbook/job-scheduler-server, mode: "0777" } - { path: /etc/openbook/workflow-server, mode: "0777" } - { path: /etc/openbook/admin-api-server, mode: "0777" } - { path: /etc/openbook/customer-api-server, mode: "0777" } - { path: /etc/openbook/admin-web-ui, mode: "0777" } - { path: /etc/openbook/customer-web-ui, mode: "0777" } - { path: /var/log/openbook/job-scheduler-server/job-scheduler-server.log, mode: "0777" } - { path: /var/log/openbook/workflow-server/workflow-server.log, mode: "0777" } - { path: /var/log/openbook/admin-api-server/admin-api-server.log, mode: "0777" } - { path: /var/log/openbook/customer-api-server/customer-api-server.log, mode: "0777" } - { path: /var/log/openbook/admin-web-ui/admin-web-ui.log, mode: "0777" } - { path: /var/log/openbook/customer-web-ui/customer-web-ui.log, mode: "0777" } - name: "Create Openbook files" template: src: "../templates/{{ item.src }}" dest: "{{ item.dest }}" mode: "{{ item.mode }}" owner: root group: root with_items: - { src: ci/./openbookctl, dest: /opt/openbook/openbookctl, mode: "0755" } - { src: database/./run.sh, dest: /opt/openbook/database/run.sh, mode: "0755" } - { src: job_scheduler_server/./run.sh, dest: /opt/openbook/job_scheduler_server/run.sh, mode: "0755" } - { src: workflow_server/./run.sh, dest: /opt/openbook/workflow_server/run.sh, mode: "0755" } - { src: admin_api_server/./run.sh, dest: /opt/openbook/admin_api_server/run.sh, mode: "0755" } - { src: customer_api_server/./run.sh, dest: /opt/openbook/customer_api_server/run.sh, mode: "0755" } - { src: admin_web_ui/./run.sh, dest: /opt/openbook/admin_web_ui/run.sh, mode: "0755" } - { src: customer_web_ui/./run.sh, dest: /opt/openbook/customer_web_ui/run.sh, mode: "0755" } - { src: job_scheduler_server//etc/openbook/job-scheduler-server/job-scheduler-server.json, dest: /etc/openbook/job-scheduler-server/job-scheduler-server.json, mode: "0644" } - { src: workflow_server//etc/openbook/workflow-server/workflow-server.json, dest: /etc/openbook/workflow-server/workflow-server.json, mode: "0644" } - { src: admin_api_server//etc/openbook/admin-api-server/admin-api-server.json, dest: /etc/openbook/admin-api-server/admin-api-server.json, mode: "0644" } - { src: customer_api_server//etc/openbook/customer-api-server/customer-api-server.json, dest: /etc/openbook/customer-api-server/customer-api-server.json, mode: "0644" } - { src: admin_web_ui//etc/openbook/admin-web-ui/admin-web-ui.json, dest: /etc/openbook/admin-web-ui/admin-web-ui.json, mode: "0644" } - { src: customer_web_ui//etc/openbook/customer-web-ui/customer-web-ui.json, dest: /etc/openbook/customer-web-ui/customer-web-ui.json, mode: "0644" } - { src: database//root/.my.cnf, dest: /root/.my.cnf, mode: "0644" } - { src: database//etc/openbook/database/create_openbook_schemas.sql, dest: /etc/openbook/database/create_openbook_schemas.sql, mode: "0755" } - { src: database//etc/openbook/database/debian.cnf, dest: /etc/openbook/database/debian.cnf, mode: "0644" } - { src: database//etc/openbook/database/conf.d/cluster.cnf, dest: /etc/openbook/database/conf.d/cluster.cnf, mode: "0644" } - { src: database//etc/openbook/database/conf.d/debconfrc, dest: /etc/openbook/database/conf.d/debconfrc, mode: "0644" } - { src: database//etc/openbook/database/bin/fix_permissions.sh, dest: /etc/openbook/database/bin/fix_permissions.sh, mode: "0755" } - { src: database//etc/openbook/database/bin/start_galera_node.sh, dest: /etc/openbook/database/bin/start_galera_node.sh, mode: "0755" } - name: "Create Openbook files" copy: src: "../files/{{ item.src }}" dest: "{{ item.dest }}" mode: "{{ item.mode }}" owner: root group: root with_items: - { src: ci/./cloudcfg.sh, dest: /opt/openbook/cloudcfg.sh, mode: "0755" } - { src: database//etc/openbook/database/my.cnf, dest: /etc/openbook/database/my.cnf, mode: "0644" } - name: "Create Openbook init script: Ubuntu" template: src: "../templates/{{ item.src }}" dest: "{{ item.dest }}" mode: "{{ item.mode }}" owner: root group: root with_items: - { src: ci/./openbook.ubuntu, dest: /etc/init.d/openbook, mode: "0755" } when: ansible_distribution == "Ubuntu" - name: "Create Openbook init script: Redhat" template: src: "../templates/{{ item.src }}" dest: "{{ item.dest }}" mode: "{{ item.mode }}" owner: root group: root with_items: - { src: ci/./openbook.redhat, dest: /etc/init.d/openbook, mode: "0755" } when: ansible_distribution == "RedHat" or ansible_distribution == "CentOS" - name: "Create Openbook init script: Gentoo" template: src: "../templates/{{ item.src }}" dest: "{{ item.dest }}" mode: "{{ item.mode }}" owner: root group: root with_items: - { src: ci/./openbook.gentoo, dest: /etc/init.d/openbook, mode: "0755" } when: ansible_distribution == "Gentoo" - name: "Add service script to systemd" shell: systemctl enable openbook when: ansible_distribution == "Ubuntu" or ansible_distribution == "RedHat" or ansible_distribution == "CentOS" - name: "Enable openbook service" service: name: "{{ item.name }}" enabled: yes runlevel: "{{ item.runlevel }}" with_items: - { name: openbook, runlevel: default } - name: "Stop Openbook" hosts: "{{ groups['target']|sort(reverse=True) }}" serial: 1 tasks: - name: "Stop Openbook" shell: | /etc/init.d/openbook stop for cont in $(docker ps | grep -v 'COMMAND' | awk '{print $1}'); do docker stop ${cont} done docker container prune -f - name: "Install Openbook" hosts: target tasks: - name: "Delete existing docker images" shell: | /opt/openbook/openbookctl stop || true for i in $(docker images | grep -v CREATED | awk '{print $3}'); do docker rmi --force $i done docker container prune -f ignore_errors: True - name: "Pull docker images" shell: | docker login --username "{{ openbook_docker_registry_username }}" --password "{{ openbook_docker_registry_password }}" "{{ openbook_docker_registry_url }}" if [ "{{ openbook_install_database|string() }}" == "True" ]; then docker pull "{{ openbook_docker_registry_url }}/openbook_database" fi if [ "{{ openbook_install_job_scheduler_server|string() }}" == "True" ]; then docker pull "{{ openbook_docker_registry_url }}/openbook_job_scheduler_server_unstable" fi if [ "{{ openbook_install_workflow_server|string() }}" == "True" ]; then docker pull "{{ openbook_docker_registry_url }}/openbook_workflow_server_unstable" fi if [ "{{ openbook_install_admin_api_server|string() }}" == "True" ]; then docker pull "{{ openbook_docker_registry_url }}/openbook_admin_api_server_unstable" fi if [ "{{ openbook_install_customer_api_server|string() }}" == "True" ]; then docker pull "{{ openbook_docker_registry_url }}/openbook_customer_api_server_unstable" fi if [ "{{ openbook_install_admin_web_ui|string() }}" == "True" ]; then docker pull "{{ openbook_docker_registry_url }}/openbook_admin_web_ui_unstable" fi if [ "{{ openbook_install_customer_web_ui|string() }}" == "True" ]; then docker pull "{{ openbook_docker_registry_url }}/openbook_customer_web_ui_unstable" fi - name: "Start Openbook" hosts: "{{ groups['target']|sort }}" serial: 1 tasks: - name: "Start Openbook" shell: /etc/init.d/openbook start when: openbook_start_app == True