ansible-role-k8s-cinder/tasks/provision.yml

378 lines
10 KiB
YAML

- name: Upload config files
template:
src: "{{item}}"
dest: /tmp/{{item}}
backup: yes
mode: 0644
with_items:
- cinder-wsgi.conf
- include: hiera.yml
- name: Generate config files
config_template:
src: cinder.conf.j2
dest: /tmp/cinder.conf
config_overrides: '{{cinder_config}}'
config_type: ini
- name: Read configs into memory
slurp:
src: "/tmp/cinder.conf"
register: "cinder_conf"
- name: Read configs into memory
slurp:
src: "/tmp/cinder-wsgi.conf"
register: "cinder_wsgi_conf"
- name: Create cinder configmaps
ignore_errors: yes
k8s_v1_config_map:
name: cinder-api
host: "{{coe_host}}"
context: "{{kube_context}}"
kubeconfig: "{{config_file}}"
namespace: "{{ namespace }}"
state: present
debug: yes
labels:
service: cinder
data:
config.json: |
{
"command": "httpd -DFOREGROUND",
"config_files": [
{
"source": "/var/lib/kolla/config_files/cinder.conf",
"dest": "/etc/cinder/cinder.conf",
"owner": "cinder",
"perm": "0600"
},
{
"source": "/var/lib/kolla/config_files/cinder-wsgi.conf",
"dest": "/etc/httpd/conf.d/cinder-wsgi.conf",
"owner": "cinder",
"perm": "0600"
}
],
"permissions": [
{
"path": "/var/lib/cinder",
"owner": "cinder:cinder",
"recurse": true
},
{
"path": "/var/log/kolla/cinder",
"owner": "cinder:cinder",
"recurse": true
}
]
}
cinder.conf: |
{{cinder_conf['content'] | b64decode}}
cinder-wsgi.conf: |
{{cinder_wsgi_conf['content'] | b64decode}}
- name: Create cinder-scheduler configmaps
ignore_errors: yes
k8s_v1_config_map:
name: cinder-scheduler
host: "{{coe_host}}"
context: "{{kube_context}}"
kubeconfig: "{{config_file}}"
namespace: "{{ namespace }}"
state: present
debug: yes
labels:
service: cinder-scheduler
data:
config.json: |
{
"command": "cinder-scheduler --config-file /etc/cinder/cinder.conf",
"config_files": [
{
"source": "/var/lib/kolla/config_files/cinder.conf",
"dest": "/etc/cinder/cinder.conf",
"owner": "cinder",
"perm": "0600"
}
],
"permissions": [
{
"path": "/var/lib/cinder",
"owner": "cinder:cinder",
"recurse": true
},
{
"path": "/var/log/kolla/cinder",
"owner": "cinder:cinder",
"recurse": true
}
]
}
cinder.conf: |
{{cinder_conf['content'] | b64decode}}
- name: Create cinder-volume configmaps
ignore_errors: yes
k8s_v1_config_map:
name: cinder-volume
host: "{{coe_host}}"
context: "{{kube_context}}"
kubeconfig: "{{config_file}}"
namespace: "{{ namespace }}"
state: present
debug: yes
labels:
service: cinder-volume
data:
config.json: |
{
"command": "/usr/bin/cinder-volume --config-file /usr/share/cinder/cinder-dist.conf --config-file /etc/cinder/cinder.conf",
"config_files": [
{
"source": "/var/lib/kolla/config_files/cinder.conf",
"dest": "/etc/cinder/cinder.conf",
"owner": "cinder",
"perm": "0600"
}
],
"permissions": [
{
"path": "/var/lib/cinder",
"owner": "cinder:cinder",
"recurse": true
},
{
"path": "/var/log/kolla/cinder",
"owner": "cinder:cinder",
"recurse": true
}
]
}
cinder.conf: |
{{cinder_conf['content'] | b64decode}}
- name: Create Cinder Database
k8s_v1_job:
name: cinder-create-db
host: "{{coe_host}}"
context: "{{kube_context}}"
kubeconfig: "{{config_file}}"
namespace: "{{ namespace }}"
service_account_name: "{{ service_account }}"
restart_policy: OnFailure
containers:
- name: cinder-create-db
image: tripleoupstream/centos-binary-kolla-toolbox:latest
image_pull_policy: IfNotPresent
command: ["sh", "-c"]
args:
- ansible localhost -m mysql_db -a
"login_host='mariadb'
login_port='3306'
login_user='root'
login_password='$DATABASE_PASSWORD'
name='cinder'"
env:
- name: DATABASE_PASSWORD
value: "{{ database_password }}"
- name: "TZ"
value: "UTC"
register: result
- name: Create Cinder User in the database
k8s_v1_job:
name: cinder-create-user
host: "{{coe_host}}"
context: "{{kube_context}}"
kubeconfig: "{{config_file}}"
namespace: "{{ namespace }}"
service_account_name: "{{ service_account }}"
restart_policy: OnFailure
containers:
- name: cinder-create-db
image: tripleoupstream/centos-binary-kolla-toolbox:latest
image_pull_policy: IfNotPresent
command: ["sh", "-c"]
args:
- ansible localhost -m mysql_user -a
"login_host='mariadb'
login_port='3306'
login_user='root'
login_password='$DATABASE_PASSWORD'
name='cinder'
password='$CINDER_DATABASE_PASSWORD'
host='%'
priv='cinder.*:ALL'
append_privs='yes'"
env:
- name: CINDER_DATABASE_PASSWORD
value: "{{ cinder_db_password }}"
- name: DATABASE_PASSWORD
value: "{{database_password}}"
- name: "TZ"
value: "UTC"
when: result|succeeded
# Cinder Scheduler won't start without cinder tables present
- name: Create Cinder Tables
k8s_v1_job:
name: cinder-create-tables
host: "{{coe_host}}"
context: "{{kube_context}}"
kubeconfig: "{{config_file}}"
namespace: "{{ namespace }}"
service_account_name: "{{ service_account }}"
restart_policy: OnFailure
containers:
- name: cinder-create-db
image: tripleoupstream/centos-binary-cinder-api:latest
image_pull_policy: IfNotPresent
# command: ["/usr/bin/cinder-manage", "db", "sync"]
env:
- name: KOLLA_KUBERNETES
value: ""
- name: KOLLA_BOOTSTRAP
value: ""
- name: KOLLA_CONFIG_STRATEGY
value: "COPY_ONCE"
- name: "TZ"
value: "UTC"
volume_mounts:
- name: kolla-config
mountPath: /var/lib/kolla/config_files/
volumes:
- name: kolla-config
config_map:
name: cinder
when: result|succeeded
- name: create cinder-api service
k8s_v1_service:
name: cinder
host: "{{coe_host}}"
context: "{{kube_context}}"
kubeconfig: "{{config_file}}"
namespace: "{{ namespace }}"
labels:
app: cinder-api
service: cinder-api
selector:
app: cinder-api
service: cinder-api
ports:
- name: cinder-api
port: 8776
target_port: 8776
# Cinder API
- name: Create Cinder-api Deployment
k8s_v1beta1_deployment:
name: cinder-api
host: "{{coe_host}}"
context: "{{kube_context}}"
kubeconfig: "{{config_file}}"
namespace: "{{ namespace }}"
service_account_name: "{{ service_account }}"
labels:
app: cinder-api
service: cinder-api
replicas: 1
spec_template_metadata_labels:
app: cinder-api
service: cinder-api
containers:
- name: cinder-api
image: tripleoupstream/centos-binary-cinder-api:latest
ports:
- container_port: 8776
protocol: TCP
env:
- name: TZ
value: UTC
- name: KOLLA_CONFIG_STRATEGY
value: COPY_ALWAYS
- name: KOLLA_KUBERNETES
value: ""
volume_mounts:
- name: kolla-config
mountPath: /var/lib/kolla/config_files/
volumes:
- name: kolla-config
config_map:
name: cinder-api
# Cinder Scheduler
- name: create cinder-scheduler deployment
k8s_v1beta1_deployment:
name: cinder-scheduler
host: "{{coe_host}}"
context: "{{kube_context}}"
kubeconfig: "{{config_file}}"
namespace: "{{ namespace }}"
service_account_name: "{{ service_account }}"
labels:
app: cinder-scheduler
service: cinder-scheduler
replicas: 1
spec_template_metadata_labels:
app: cinder-scheduler
service: cinder-scheduler
containers:
- name: cinder-scheduler
image: tripleoupstream/centos-binary-cinder-scheduler:latest
env:
- name: TZ
value: UTC
- name: KOLLA_CONFIG_STRATEGY
value: COPY_ALWAYS
- name: KOLLA_KUBERNETES
value: ""
volume_mounts:
- name: kolla-config
mountPath: /var/lib/kolla/config_files/
volumes:
- name: kolla-config
config_map:
name: cinder-scheduler
- name: Create Cinder Volume Deployment
k8s_v1beta1_deployment:
name: cinder-volume
host: "{{coe_host}}"
context: "{{kube_context}}"
kubeconfig: "{{config_file}}"
namespace: "{{ namespace }}"
service_account_name: "{{ service_account }}"
labels:
app: cinder-volume
service: cinder-volume
replicas: 1
spec_template_metadata_labels:
app: cinder-volume
service: cinder-volume
containers:
- name: cinder-volume
image: tripleoupstream/centos-binary-cinder-volume:latest
image_pull_policy: IfNotPresent
volumeMounts:
- name: kolla-config
mountPath: /var/lib/kolla/config_files/
env:
- name: TZ
value: UTC
- name: KOLLA_CONFIG_STRATEGY
value: COPY_ALWAYS
- name: KOLLA_KUBERNETES
value: ""
volumes:
- name: kolla-config
config_map:
name: cinder-volume