summaryrefslogtreecommitdiff
path: root/salt/openbook/ansible/files/openbook.yaml
blob: c33507cdd42147dc02c876b1e510333721c0fc99 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
---
- name: "Install Openbook"
  hosts: target
  tasks:
    - name: "Install network tools"
      apt:
        pkg: "{% raw %}{{ item }}{% endraw %}"
        state: present
      with_items:
        - netcat-openbsd
        - lsof
      when: ansible_distribution == "Ubuntu"

    - name: "Install network tools"
      yum:
        name: "{% raw %}{{ item }}{% endraw %}"
        state: present
      with_items:
        - nmap-ncat
        - lsof
      when: ansible_distribution == "RedHat" or ansible_distribution == "CentOS"

    - name: "Install network tools"
      portage:
        package: "{% raw %}{{ item }}{% endraw %}"
        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: "{% raw %}{{ item.regexp }}{% endraw %}"
        line: "{% raw %}{{ item.line }}{% endraw %}"
      with_items:
        - { regexp: '^127\.0\.0\.1.*$', line: "127.0.0.1 localhost {% raw %}{{ ansible_nodename }}{% endraw %}" }

    - name: "Create Openbook directories"
      file:
        path: "{% raw %}{{ item.path }}{% endraw %}"
        state: directory
        mode: "{% raw %}{{ item.mode }}{% endraw %}"
      with_items:
        - { path: {{ pillar["ansible"]["dirs"]["output"]["name"] }}/database, mode: "0755" }
        - { path: {{ pillar["ansible"]["dirs"]["output"]["name"] }}/job_scheduler_server, mode: "0755" }
        - { path: {{ pillar["ansible"]["dirs"]["output"]["name"] }}/workflow_server, mode: "0755" }
        - { path: {{ pillar["ansible"]["dirs"]["output"]["name"] }}/admin_api_server, mode: "0755" }
        - { path: {{ pillar["ansible"]["dirs"]["output"]["name"] }}/customer_api_server, mode: "0755" }
        - { path: {{ pillar["ansible"]["dirs"]["output"]["name"] }}/admin_web_ui, mode: "0755" }
        - { path: {{ pillar["ansible"]["dirs"]["output"]["name"] }}/customer_web_ui, mode: "0755" }
        - { path: {{ pillar["database"]["dirs"]["etc_openbook_database_conf.d"]["name"] }}, mode: "0755" }
        - { path: {{ pillar["database"]["dirs"]["etc_openbook_database_bin"]["name"] }}, mode: "0755" }
        - { path: {{ pillar["database"]["dirs"]["var_lib_mysql"]["name"] }}, mode: "0777" }
        - { path: {{ pillar["database"]["dirs"]["var_log_mysql"]["name"] }}, mode: "0777" }
        - { path: {{ pillar["job_scheduler_server"]["dirs"]["etc_openbook_job_scheduler_server"]["name"] }}, mode: "0777" }
        - { path: {{ pillar["workflow_server"]["dirs"]["etc_openbook_workflow_server"]["name"] }}, mode: "0777" }
        - { path: {{ pillar["admin_api_server"]["dirs"]["etc_openbook_admin_api_server"]["name"] }}, mode: "0777" }
        - { path: {{ pillar["customer_api_server"]["dirs"]["etc_openbook_customer_api_server"]["name"] }}, mode: "0777" }
        - { path: {{ pillar["admin_web_ui"]["dirs"]["etc_openbook_admin_web_ui"]["name"] }}, mode: "0777" }
        - { path: {{ pillar["customer_web_ui"]["dirs"]["etc_openbook_customer_web_ui"]["name"] }}, mode: "0777" }
        - { path: {{ pillar["job_scheduler_server"]["log"] }}, mode: "0777" }
        - { path: {{ pillar["workflow_server"]["log"] }}, mode: "0777" }
        - { path: {{ pillar["admin_api_server"]["log"] }}, mode: "0777" }
        - { path: {{ pillar["customer_api_server"]["log"] }}, mode: "0777" }
        - { path: {{ pillar["admin_web_ui"]["log"] }}, mode: "0777" }
        - { path: {{ pillar["customer_web_ui"]["log"] }}, mode: "0777" }

    - name: "Create Openbook files"
      template:
        src: "../templates/{% raw %}{{ item.src }}{% endraw %}"
        dest: "{% raw %}{{ item.dest }}{% endraw %}"
        mode: "{% raw %}{{ item.mode }}{% endraw %}"
        owner: root
        group: root
      with_items:
        - { src: ci/{{ pillar["ci"]["files"]["openbookctl"]["path"] }}/{{ pillar["ci"]["files"]["openbookctl"]["name"] }}, dest: {{ pillar["ansible"]["dirs"]["output"]["name"] }}/{{ pillar["ci"]["files"]["openbookctl"]["name"] }}, mode: "0755" }
        - { src: database/{{ pillar["database"]["files"]["run_sh"]["path"] }}/{{ pillar["database"]["files"]["run_sh"]["name"] }}, dest: {{ pillar["ansible"]["dirs"]["output"]["name"] }}/database/{{ pillar["database"]["files"]["run_sh"]["name"] }}, mode: "0755" }
        - { src: job_scheduler_server/{{ pillar["job_scheduler_server"]["files"]["run_sh"]["path"] }}/{{ pillar["job_scheduler_server"]["files"]["run_sh"]["name"] }}, dest: {{ pillar["ansible"]["dirs"]["output"]["name"] }}/job_scheduler_server/{{ pillar["job_scheduler_server"]["files"]["run_sh"]["name"] }}, mode: "0755" }
        - { src: workflow_server/{{ pillar["workflow_server"]["files"]["run_sh"]["path"] }}/{{ pillar["workflow_server"]["files"]["run_sh"]["name"] }}, dest: {{ pillar["ansible"]["dirs"]["output"]["name"] }}/workflow_server/{{ pillar["workflow_server"]["files"]["run_sh"]["name"] }}, mode: "0755" }
        - { src: admin_api_server/{{ pillar["admin_api_server"]["files"]["run_sh"]["path"] }}/{{ pillar["admin_api_server"]["files"]["run_sh"]["name"] }}, dest: {{ pillar["ansible"]["dirs"]["output"]["name"] }}/admin_api_server/{{ pillar["admin_api_server"]["files"]["run_sh"]["name"] }}, mode: "0755" }
        - { src: customer_api_server/{{ pillar["customer_api_server"]["files"]["run_sh"]["path"] }}/{{ pillar["customer_api_server"]["files"]["run_sh"]["name"] }}, dest: {{ pillar["ansible"]["dirs"]["output"]["name"] }}/customer_api_server/{{ pillar["customer_api_server"]["files"]["run_sh"]["name"] }}, mode: "0755" }
        - { src: admin_web_ui/{{ pillar["admin_web_ui"]["files"]["run_sh"]["path"] }}/{{ pillar["admin_web_ui"]["files"]["run_sh"]["name"] }}, dest: {{ pillar["ansible"]["dirs"]["output"]["name"] }}/admin_web_ui/{{ pillar["admin_web_ui"]["files"]["run_sh"]["name"] }}, mode: "0755" }
        - { src: customer_web_ui/{{ pillar["customer_web_ui"]["files"]["run_sh"]["path"] }}/{{ pillar["customer_web_ui"]["files"]["run_sh"]["name"] }}, dest: {{ pillar["ansible"]["dirs"]["output"]["name"] }}/customer_web_ui/{{ pillar["customer_web_ui"]["files"]["run_sh"]["name"] }}, mode: "0755" }
        - { src: job_scheduler_server/{{ pillar["job_scheduler_server"]["files"]["job_scheduler_server_json"]["path"] }}/{{ pillar["job_scheduler_server"]["files"]["job_scheduler_server_json"]["name"] }}, dest: {{ pillar["job_scheduler_server"]["files"]["job_scheduler_server_json"]["path"] }}/{{ pillar["job_scheduler_server"]["files"]["job_scheduler_server_json"]["name"] }}, mode: "0644" }
        - { src: workflow_server/{{ pillar["workflow_server"]["files"]["workflow_server_json"]["path"] }}/{{ pillar["workflow_server"]["files"]["workflow_server_json"]["name"] }}, dest: {{ pillar["workflow_server"]["files"]["workflow_server_json"]["path"] }}/{{ pillar["workflow_server"]["files"]["workflow_server_json"]["name"] }}, mode: "0644" }
        - { src: admin_api_server/{{ pillar["admin_api_server"]["files"]["admin_api_server_json"]["path"] }}/{{ pillar["admin_api_server"]["files"]["admin_api_server_json"]["name"] }}, dest: {{ pillar["admin_api_server"]["files"]["admin_api_server_json"]["path"] }}/{{ pillar["admin_api_server"]["files"]["admin_api_server_json"]["name"] }}, mode: "0644" }
        - { src: customer_api_server/{{ pillar["customer_api_server"]["files"]["customer_api_server_json"]["path"] }}/{{ pillar["customer_api_server"]["files"]["customer_api_server_json"]["name"] }}, dest: {{ pillar["customer_api_server"]["files"]["customer_api_server_json"]["path"] }}/{{ pillar["customer_api_server"]["files"]["customer_api_server_json"]["name"] }}, mode: "0644" }
        - { src: admin_web_ui/{{ pillar["admin_web_ui"]["files"]["admin_web_ui_json"]["path"] }}/{{ pillar["admin_web_ui"]["files"]["admin_web_ui_json"]["name"] }}, dest: {{ pillar["admin_web_ui"]["files"]["admin_web_ui_json"]["path"] }}/{{ pillar["admin_web_ui"]["files"]["admin_web_ui_json"]["name"] }}, mode: "0644" }
        - { src: customer_web_ui/{{ pillar["customer_web_ui"]["files"]["customer_web_ui_json"]["path"] }}/{{ pillar["customer_web_ui"]["files"]["customer_web_ui_json"]["name"] }}, dest: {{ pillar["customer_web_ui"]["files"]["customer_web_ui_json"]["path"] }}/{{ pillar["customer_web_ui"]["files"]["customer_web_ui_json"]["name"] }}, mode: "0644" }
        - { src: database/{{ pillar["database"]["files"]["root_my_cnf"]["path"] }}/{{ pillar["database"]["files"]["root_my_cnf"]["name"] }}, dest: {{ pillar["database"]["files"]["root_my_cnf"]["path"] }}/{{ pillar["database"]["files"]["root_my_cnf"]["name"] }}, mode: "0644" }
        - { src: database/{{ pillar["database"]["files"]["create_openbook_schemas"]["path"] }}/{{ pillar["database"]["files"]["create_openbook_schemas"]["name"] }}, dest: {{ pillar["database"]["files"]["create_openbook_schemas"]["path"] }}/{{ pillar["database"]["files"]["create_openbook_schemas"]["name"] }}, mode: "0755" }
        - { src: database/{{ pillar["database"]["files"]["debian_cnf"]["path"] }}/{{ pillar["database"]["files"]["debian_cnf"]["name"] }}, dest: {{ pillar["database"]["files"]["debian_cnf"]["path"] }}/{{ pillar["database"]["files"]["debian_cnf"]["name"] }}, mode: "0644" }
        - { src: database/{{ pillar["database"]["files"]["cluster_cnf"]["path"] }}/{{ pillar["database"]["files"]["cluster_cnf"]["name"] }}, dest: {{ pillar["database"]["files"]["cluster_cnf"]["path"] }}/{{ pillar["database"]["files"]["cluster_cnf"]["name"] }}, mode: "0644" }
        - { src: database/{{ pillar["database"]["files"]["debconfrc"]["path"] }}/{{ pillar["database"]["files"]["debconfrc"]["name"] }}, dest: {{ pillar["database"]["files"]["debconfrc"]["path"] }}/{{ pillar["database"]["files"]["debconfrc"]["name"] }}, mode: "0644" }
        - { src: database/{{ pillar["database"]["files"]["fix_permissions_sh"]["path"] }}/{{ pillar["database"]["files"]["fix_permissions_sh"]["name"] }}, dest: {{ pillar["database"]["files"]["fix_permissions_sh"]["path"] }}/{{ pillar["database"]["files"]["fix_permissions_sh"]["name"] }}, mode: "0755" }
        - { src: database/{{ pillar["database"]["files"]["start_galera_node_sh"]["path"] }}/{{ pillar["database"]["files"]["start_galera_node_sh"]["name"] }}, dest: {{ pillar["database"]["files"]["start_galera_node_sh"]["path"] }}/{{ pillar["database"]["files"]["start_galera_node_sh"]["name"] }}, mode: "0755" }

    - name: "Create Openbook files"
      copy:
        src: "../files/{% raw %}{{ item.src }}{% endraw %}"
        dest: "{% raw %}{{ item.dest }}{% endraw %}"
        mode: "{% raw %}{{ item.mode }}{% endraw %}"
        owner: root
        group: root
      with_items:
        - { src: ci/{{ pillar["ci"]["files"]["cloudcfg_sh"]["path"] }}/{{ pillar["ci"]["files"]["cloudcfg_sh"]["name"] }}, dest: {{ pillar["ansible"]["dirs"]["output"]["name"] }}/{{ pillar["ci"]["files"]["cloudcfg_sh"]["name"] }}, mode: "0755" }
        - { src: database/{{ pillar["database"]["files"]["my_cnf"]["path"] }}/{{ pillar["database"]["files"]["my_cnf"]["name"] }}, dest: {{ pillar["database"]["files"]["my_cnf"]["path"] }}/{{ pillar["database"]["files"]["my_cnf"]["name"] }}, mode: "0644" }

    - name: "Create Openbook init script: Ubuntu"
      template:
        src: "../templates/{% raw %}{{ item.src }}{% endraw %}"
        dest: "{% raw %}{{ item.dest }}{% endraw %}"
        mode: "{% raw %}{{ item.mode }}{% endraw %}"
        owner: root
        group: root
      with_items:
        - { src: ci/{{ pillar["ci"]["files"]["openbook_ubuntu"]["path"] }}/{{ pillar["ci"]["files"]["openbook_ubuntu"]["name"] }}, dest: /etc/init.d/openbook, mode: "0755" }
      when: ansible_distribution == "Ubuntu"

    - name: "Create Openbook init script: Redhat"
      template:
        src: "../templates/{% raw %}{{ item.src }}{% endraw %}"
        dest: "{% raw %}{{ item.dest }}{% endraw %}"
        mode: "{% raw %}{{ item.mode }}{% endraw %}"
        owner: root
        group: root
      with_items:
        - { src: ci/{{ pillar["ci"]["files"]["openbook_redhat"]["path"] }}/{{ pillar["ci"]["files"]["openbook_redhat"]["name"] }}, dest: /etc/init.d/openbook, mode: "0755" }
      when: ansible_distribution == "RedHat" or ansible_distribution == "CentOS"

    - name: "Create Openbook init script: Gentoo"
      template:
        src: "../templates/{% raw %}{{ item.src }}{% endraw %}"
        dest: "{% raw %}{{ item.dest }}{% endraw %}"
        mode: "{% raw %}{{ item.mode }}{% endraw %}"
        owner: root
        group: root
      with_items:
        - { src: ci/{{ pillar["ci"]["files"]["openbook_gentoo"]["path"] }}/{{ pillar["ci"]["files"]["openbook_gentoo"]["name"] }}, 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: "{% raw %}{{ item.name }}{% endraw %}"
        enabled: yes
        runlevel: "{% raw %}{{ item.runlevel }}{% endraw %}"
      with_items:
        - { name: openbook, runlevel: default }

- name: "Stop Openbook"
  hosts: "{% raw %}{{ groups['target']|sort(reverse=True) }}{% endraw %}"
  serial: 1
  tasks:
    - name: "Stop Openbook"
      shell: /etc/init.d/openbook stop

- name: "Install Openbook"
  hosts: target
  tasks:
    - name: "Delete existing docker images"
      shell: |
        {{ pillar["ansible"]["dirs"]["output"]["name"] }}/{{ pillar["ci"]["files"]["openbookctl"]["name"] }} 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 {{ pillar["registry"]["username"] }} --password {{ pillar["registry"]["password"] }} {{ pillar["registry"]["url"] }}
        if [ "{% raw %}{{ openbook_install_database }}{% endraw %}" == "True" ]; then
            docker pull {{ pillar["registry"]["url"] }}/{{ pillar["database"]["image_name"] }}
        fi
        docker pull {{ pillar["registry"]["url"] }}/{{ pillar["job_scheduler_server"]["image_name"] }}
        docker pull {{ pillar["registry"]["url"] }}/{{ pillar["workflow_server"]["image_name"] }}
        docker pull {{ pillar["registry"]["url"] }}/{{ pillar["admin_api_server"]["image_name"] }}
        docker pull {{ pillar["registry"]["url"] }}/{{ pillar["customer_api_server"]["image_name"] }}
        docker pull {{ pillar["registry"]["url"] }}/{{ pillar["admin_web_ui"]["image_name"] }}
        docker pull {{ pillar["registry"]["url"] }}/{{ pillar["customer_web_ui"]["image_name"] }}

- name: "Start Openbook"
  hosts: "{% raw %}{{ groups['target']|sort }}{% endraw %}"
  serial: 1
  tasks:
    - name: "Start Openbook"
      shell: /etc/init.d/openbook start
      when: openbook_start_app == True