tripleo-ansible/tripleo_ansible/roles/tripleo-container-manage/tasks/podman/create.yml

85 lines
4.0 KiB
YAML

---
# Copyright 2019 Red Hat, Inc.
# 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: Prepare container facts
set_fact:
container_name: "{{ batched_container_data.0.keys() | first }}"
container_data: "{{ batched_container_data.0[batched_container_data.0.keys()|first] }}"
- name: "{{ container_name }} : Run execute task"
include_tasks: exec.yml
when:
- container_data.action is defined
- container_data.action == 'exec'
- name: "{{ container_name }} : Manage container"
when: container_data.action is not defined
podman_container:
cap_add: "{{ container_data.cap_add | default(omit) }}"
cap_drop: "{{ container_data.cap_drop | default(omit) }}"
command: "{{ container_data.command | default(omit) }}"
conmon_pidfile: "/var/run/{{ container_name }}.pid"
cpu_shares: "{{ container_data.cpu_shares | default(omit) | int }}"
# cpuset_cpus: "{{ container_data.cpuset_cpus | default(omit) }}"
detach: "{{ container_data.detach | default(true) }}"
env: "{{ container_data.environment if container_data.environment is defined and container_data.environment else {} }}"
env_file: "{{ container_data.env_file | default(omit) }}"
etc_hosts: "{{ container_data.extra_hosts | default({}) }}"
group_add: "{{ container_data.group_add | default(omit) }}"
hostname: "{{ container_data.hostname | default(omit) }}"
image: "{{ container_data.image }}"
interactive: "{{ container_data.interactive | default(false) }}"
ipc: "{{ container_data.ipc | default(omit) }}"
label:
config_id: "{{ tripleo_container_manage_config_id }}"
container_name: "{{ container_name }}"
managed_by: tripleo_ansible
config_data: "{{ container_data | to_json }}"
log_driver: 'k8s-file'
# log_opt: |
# "{{ 'path=' if tripleo_container_manage_log_path is defined else '' }}
# {{ tripleo_container_manage_log_path | default('') }}
# {{ '/' if tripleo_container_manage_log_path is defined else '' }}
# {{ container_data if tripleo_container_manage_log_path is defined else '' }}"
memory: "{{ container_data.mem_limit | default(omit) }}"
memory_swap: "{{ container_data.mem_swappiness | default(omit) }}"
name: "{{ container_name }}"
net: "{{ container_data.net | default('none') }}"
pid: "{{ container_data.pid | default(omit) }}"
privileged: "{{ container_data.privileged | default(false) }}"
rm: "{{ container_data.remove | default(false) }}"
security_opt: "{{ container_data.security_opt | default(omit) }}"
state: present
stop_signal: "{{ container_data.stop_signal | default(omit) }}"
stop_timeout: "{{ container_data.stop_grace_period | default(omit) | int }}"
tty: "{{ container_data.tty | default(false) }}"
ulimit: "{{ container_data.ulimit | default(omit) }}"
user: "{{ container_data.user | default(omit) }}"
uts: "{{ container_data.uts | default(omit) }}"
volume: "{{ container_data.volumes | default(omit) }}"
volumes_from: "{{ container_data.volumes_from | default([]) }}"
register: podman_container
- name: "{{ container_name }} : Manage systemd service }}"
include_tasks: systemd.yml
when:
- container_data.action is not defined
- container_data.restart is defined
# systemd doesn't have the equivalent of docker unless-stopped.
# Let's force 'always' so containers aren't restarted when stopped by
# systemd, but restarted when in failure.
- container_data.restart == 'always' or container_data.restart == 'unless-stopped'