wip
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
docker_build_image: "{{docker_build_image |default({}) |combine( {item.item: item.stdout} ) }}"
|
||||
|
||||
- name: build - Debug docker_elk_build_image
|
||||
when: docker_debug|default(false)
|
||||
with_items: "{{dockers|default([])}}"
|
||||
debug: msg="{{docker_build_image[item]}}"
|
||||
when: docker_debug|default(false)
|
||||
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
# file: tasks/check.yml
|
||||
|
||||
- name: check - kernel version
|
||||
when: ansible_kernel is version(docker_check_kernel, "<")
|
||||
fail:
|
||||
msg: >
|
||||
docker requires a minimum kernel version of {{docker_check_kernel}}
|
||||
on {{ansible_distribution}} {{ansible_distribution_version}}
|
||||
when: ansible_kernel is version(docker_check_kernel, "<")
|
||||
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
# file: tasks/config.yml
|
||||
|
||||
- name: config - add docker storage setup
|
||||
notify: restart docker
|
||||
lineinfile: dest="{{docker_init_config_directory}}/{{docker_package}}-storage-setup" state="present" line="STORAGE_DRIVER=\"\""
|
||||
when: docker_package|length > 0 and ansible_service_mgr == "systemd" and ansible_os_family|lower == "redhat"
|
||||
lineinfile: dest="{{docker_init_config_directory}}/{{docker_package}}-storage-setup" state="present" line="STORAGE_DRIVER=\"\""
|
||||
become: yes
|
||||
notify: restart docker
|
||||
|
||||
- name: config - register docker_daemon_config
|
||||
set_fact:
|
||||
@@ -13,24 +13,25 @@
|
||||
ignore_errors: true
|
||||
|
||||
- name: config - add docker daemon storage configuration for btrfs
|
||||
notify: restart docker
|
||||
when: docker_package|length > 0
|
||||
template:
|
||||
src: daemon.json.j2
|
||||
dest: "{{docker_daemon_config_file}}"
|
||||
owner: root
|
||||
group: docker
|
||||
mode: "0640"
|
||||
when: docker_package|length > 0
|
||||
become: yes
|
||||
notify: restart docker
|
||||
|
||||
# - name: config - disable docker iptables setup
|
||||
# lineinfile: dest="/lib/systemd/system/docker.service" state="present" regex="^ExecStart=" line="ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --iptables=false"
|
||||
# notify: restart docker
|
||||
# when: docker_package|length > 0 and ansible_service_mgr == "systemd"
|
||||
# lineinfile: dest="/lib/systemd/system/docker.service" state="present" regex="^ExecStart=" line="ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --iptables=false"
|
||||
# become: yes
|
||||
# notify: restart docker
|
||||
|
||||
- name: config - setup docker mtu on Openstack VMs
|
||||
notify: restart docker
|
||||
lineinfile: dest="{{docker_init_config_directory}}/{{docker_package}}" state="present" backrefs=true regexp='^{{docker_opts}}=(?:\'|\")?((?:\s*[\w=\/\-\.](?<!--mtu=1450)\s*)*)(?:\'|\")?$' line='{{docker_opts}}="\1 --mtu=1450"'
|
||||
when: docker_package|length > 0 and ansible_product_name == "OpenStack Nova"
|
||||
lineinfile: dest="{{docker_init_config_directory}}/{{docker_package}}" state="present" backrefs=true regexp='^{{docker_opts}}=(?:\'|\")?((?:\s*[\w=\/\-\.](?<!--mtu=1450)\s*)*)(?:\'|\")?$' line='{{docker_opts}}="\1 --mtu=1450"'
|
||||
become: yes
|
||||
notify: restart docker
|
||||
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
---
|
||||
# file: tasks/group.yml
|
||||
# file: tasks/groups.yml
|
||||
|
||||
- name: group - create docker group
|
||||
- name: groups - create docker group
|
||||
when: ansible_os_family|lower != "alpine"
|
||||
group: name="docker" state="present" system="yes"
|
||||
become: yes
|
||||
when: ansible_os_family|lower != "alpine"
|
||||
|
||||
- name: group - add me to the docker group
|
||||
- name: groups - add me to the docker group
|
||||
when: ansible_os_family|lower != "alpine" and ansible_user_uid != "0"
|
||||
user: name="{{ansible_user_id}}" groups=docker append=yes
|
||||
become: yes
|
||||
when: ansible_os_family|lower != "alpine" and ansible_user_uid != "0"
|
||||
|
||||
@@ -13,15 +13,15 @@
|
||||
- import_tasks: files.yml
|
||||
tags:
|
||||
- files
|
||||
- import_tasks: package.yml
|
||||
- import_tasks: packages.yml
|
||||
tags:
|
||||
- package
|
||||
- import_tasks: service.yml
|
||||
- packages
|
||||
- import_tasks: services.yml
|
||||
tags:
|
||||
- service
|
||||
- import_tasks: group.yml
|
||||
- services
|
||||
- import_tasks: groups.yml
|
||||
tags:
|
||||
- group
|
||||
- groups
|
||||
- import_tasks: build.yml
|
||||
tags:
|
||||
- build
|
||||
@@ -31,3 +31,4 @@
|
||||
- import_tasks: myos.yml
|
||||
tags:
|
||||
- myos
|
||||
|
||||
|
||||
@@ -14,16 +14,14 @@
|
||||
uri:
|
||||
url: http://169.254.169.254/latest/meta-data
|
||||
timeout: 1
|
||||
register: aws_uri_check
|
||||
tags:
|
||||
- aws
|
||||
failed_when: False
|
||||
register: aws_uri_check
|
||||
|
||||
- import_tasks: myos_ec2.yml
|
||||
when: aws_uri_check.status == 200
|
||||
tags:
|
||||
- aws
|
||||
- ec2
|
||||
when: aws_uri_check.status == 200
|
||||
|
||||
# ansible v2.8
|
||||
# - name: myos - prune docker objects
|
||||
@@ -37,6 +35,8 @@
|
||||
# builder_cache: yes
|
||||
|
||||
- name: myos - launch docker containers
|
||||
when: myos.tags is defined and myos.tags.env is defined and myos.tags.services is defined and myos.tags.user is defined
|
||||
with_items: '{{myos.tags.services.split(" ")}}'
|
||||
docker_container:
|
||||
image: "{{docker_registry|default(myos.tags.user)}}/{{myos.tags.user}}/{{myos.tags.env}}/{% if ':' in item %}{{item}}{% else %}{{item}}:{{docker_image_tag|default('latest')}}{% endif %}"
|
||||
name: "{{myos.tags.user}}_{{myos.tags.env}}_{{item|replace('/','_')|regex_replace(':.*','')}}"
|
||||
@@ -47,19 +47,18 @@
|
||||
- "{{ lookup('env','ANSIBLE_DISKS_NFS_PATH') }}:/shared"
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
- /var/run/docker.sock:/tmp/docker.sock:ro
|
||||
with_items: '{{myos.tags.services.split(" ")}}'
|
||||
when: myos.tags is defined and myos.tags.env is defined and myos.tags.services is defined and myos.tags.user is defined
|
||||
|
||||
- name: myos - add docker containers to inventory
|
||||
when: myos.tags is defined and myos.tags.env is defined and myos.tags.services is defined and myos.tags.user is defined
|
||||
with_items: '{{myos.tags.services.split(" ")}}'
|
||||
add_host:
|
||||
name: "{{myos.tags.user}}_{{myos.tags.env}}_{{item|replace('/','_')|regex_replace(':.*','')}}"
|
||||
ansible_connection: docker
|
||||
changed_when: false
|
||||
with_items: '{{myos.tags.services.split(" ")}}'
|
||||
when: myos.tags is defined and myos.tags.env is defined and myos.tags.services is defined and myos.tags.user is defined
|
||||
|
||||
- name: myos - run make deploy-hook in docker containers
|
||||
when: myos.tags is defined and myos.tags.env is defined and myos.tags.services is defined and myos.tags.user is defined
|
||||
with_items: '{{myos.tags.services.split(" ")}}'
|
||||
delegate_to: "{{myos.tags.user}}_{{myos.tags.env}}_{{item|replace('/','_')|regex_replace(':.*','')}}"
|
||||
raw: "command -v make || exit 0 && make deploy-hook CONTAINER={{myos.tags.user}}_{{myos.tags.env}}_{{item|replace('/','_')|regex_replace(':.*','')}} HOST={{ansible_ec2_local_ipv4}}"
|
||||
with_items: '{{myos.tags.services.split(" ")}}'
|
||||
when: myos.tags is defined and myos.tags.env is defined and myos.tags.services is defined and myos.tags.user is defined
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
ec2_metadata_facts:
|
||||
|
||||
- name: myos_ec2 - get instance tags
|
||||
when: ansible_ec2_instance_id is defined
|
||||
ec2_tag:
|
||||
aws_access_key: "{{ aws_access_key_id }}"
|
||||
aws_secret_key: "{{ aws_secret_access_key }}"
|
||||
@@ -12,9 +13,8 @@
|
||||
resource: "{{ ansible_ec2_instance_id }}"
|
||||
state: list
|
||||
register: myos
|
||||
when: ansible_ec2_instance_id is defined
|
||||
|
||||
- name: myos_ec2 - ecr login
|
||||
shell: "$(aws ecr get-login --no-include-email --region {{ aws_region }})"
|
||||
when: myos.tags is defined
|
||||
shell: "$(aws ecr get-login --no-include-email --region {{ aws_region }})"
|
||||
|
||||
|
||||
@@ -1,28 +1,29 @@
|
||||
---
|
||||
# file: tasks/package.yml
|
||||
# file: tasks/packages.yml
|
||||
|
||||
- name: package - packages pre installation
|
||||
with_items: "{{docker_packages|default([])}}"
|
||||
- name: packages - install/remove docker packages
|
||||
with_items: "{{ docker_packages|default([]) }}"
|
||||
package: name="{{item.name}}" state="{{item.state}}"
|
||||
become: yes
|
||||
|
||||
- name: package - add docker GPG key
|
||||
apt_key: url=https://download.docker.com/linux/debian/gpg
|
||||
- name: packages - add docker GPG key
|
||||
when: ansible_os_family|lower == "debian"
|
||||
apt_key: url=https://download.docker.com/linux/debian/gpg
|
||||
ignore_errors: true
|
||||
become: yes
|
||||
|
||||
- name: package - define arch
|
||||
- name: packages - define arch
|
||||
set_fact:
|
||||
docker_apt_arch: "{% if ansible_machine == 'aarch64' %}arm64{% endif %}{% if ansible_machine == 'x86_64' %}amd64{% endif %}"
|
||||
|
||||
- name: add docker APT repository
|
||||
- name: packages - add docker APT repository
|
||||
when: ansible_os_family|lower == "debian"
|
||||
apt_repository:
|
||||
repo: deb [arch={{docker_apt_arch}}] https://download.docker.com/linux/{{ansible_distribution|lower}} {{ansible_distribution_release}} stable
|
||||
when: ansible_os_family|lower == "debian"
|
||||
become: yes
|
||||
|
||||
- name: package - add docker package
|
||||
package: name="{{docker_package}}" state=present
|
||||
- name: packages - add docker package
|
||||
when: docker_package|length > 0
|
||||
package: name="{{docker_package}}" state=present
|
||||
become: yes
|
||||
|
||||
@@ -12,9 +12,9 @@
|
||||
docker_current_status: "{{docker_current_status |default({}) |combine( {item.item: item.stdout} ) }}"
|
||||
|
||||
- name: run - Debug docker_current_status
|
||||
when: docker_debug|default(false)
|
||||
with_items: "{{dockers|default([])}}"
|
||||
debug: msg="{{docker_current_status[item]}}"
|
||||
when: docker_debug|default(false)
|
||||
|
||||
- name: run - Get current docker image
|
||||
with_items: "{{dockers|default([])}}"
|
||||
@@ -27,27 +27,27 @@
|
||||
docker_current_image: "{{docker_current_image |default({}) |combine( {item.item: item.stdout} ) }}"
|
||||
|
||||
- name: run - Debug docker_current_image
|
||||
when: docker_debug|default(false)
|
||||
with_items: "{{dockers|default([])}}"
|
||||
debug: msg="{{docker_current_image[item]}}"
|
||||
when: docker_debug|default(false)
|
||||
|
||||
- name: run - Stop current docker
|
||||
when: ( docker_restart|default(false) and "{{docker_current_image[item]}}" != "{{docker_build_image[item]}}" or docker_force_restart|default(false) ) and "{{docker_current_status[item]}}" == "{{item}} running"
|
||||
with_items: "{{dockers|default([])}}"
|
||||
command: "docker stop {{item}}"
|
||||
when: ( docker_restart|default(false) and "{{docker_current_image[item]}}" != "{{docker_build_image[item]}}" or docker_force_restart|default(false) ) and "{{docker_current_status[item]}}" == "{{item}} running"
|
||||
|
||||
- name: run - Remove current docker
|
||||
when: ( docker_restart|default(false) and "{{docker_current_image[item]}}" != "{{docker_build_image[item]}}" or docker_force_restart|default(false) ) and "{{docker_current_status[item]}}" != ""
|
||||
with_items: "{{dockers|default([])}}"
|
||||
command: "docker rm {{item}}"
|
||||
when: ( docker_restart|default(false) and "{{docker_current_image[item]}}" != "{{docker_build_image[item]}}" or docker_force_restart|default(false) ) and "{{docker_current_status[item]}}" != ""
|
||||
|
||||
- name: run - Run docker image
|
||||
when: docker_start|default(true) and "{{docker_current_image[item]}}" != "{{docker_build_image[item]}}" or docker_force_restart|default(false)
|
||||
with_items: "{{dockers|default([])}}"
|
||||
command: "/usr/local/bin/docker-run -q -c {{docker_cluster|default('\"\"')}} {{item}}"
|
||||
when: docker_start|default(true) and "{{docker_current_image[item]}}" != "{{docker_build_image[item]}}" or docker_force_restart|default(false)
|
||||
|
||||
- name: run - Start docker
|
||||
when: docker_start|default(true) and "{{docker_current_image[item]}}" == "{{docker_build_image[item]}}" and "{{docker_current_status[item]}}" != "{{item}} running"
|
||||
with_items: "{{dockers|default([])}}"
|
||||
command: "docker start {{item}}"
|
||||
when: docker_start|default(true) and "{{docker_current_image[item]}}" == "{{docker_build_image[item]}}" and "{{docker_current_status[item]}}" != "{{item}} running"
|
||||
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
---
|
||||
# file: tasks/service.yml
|
||||
|
||||
- name: service - start docker daemon
|
||||
with_items: "{{docker_services|default([])}}"
|
||||
service:
|
||||
name: "{{item}}"
|
||||
state: started
|
||||
enabled: yes
|
||||
become: yes
|
||||
when: ansible_service_mgr|lower != "openrc" and ansible_os_family|lower != "alpine"
|
||||
|
||||
- name: service - force openrc status
|
||||
shell: "kill -0 $(cat /run/{{item}}.pid) && [ ! -h /run/openrc/started/{{item}} ] && ln -s /etc/init.d/{{item}} /run/openrc/started/{{item}} && service {{item}} restart ||:"
|
||||
with_items: "{{docker_services|default([])}}"
|
||||
become: yes
|
||||
when: ansible_service_mgr|lower == "openrc" or ansible_os_family|lower == "alpine"
|
||||
|
||||
- name: service - start docker daemon
|
||||
with_items: "{{docker_services|default([])}}"
|
||||
service:
|
||||
name: "{{item}}"
|
||||
state: started
|
||||
enabled: yes
|
||||
runlevel: boot
|
||||
become: yes
|
||||
when: ansible_service_mgr|lower == "openrc" or ansible_os_family|lower == "alpine"
|
||||
|
||||
- name: service - force docker restart
|
||||
shell: "[ ! -d /var/lib/docker/tmp ] && service docker restart ||:"
|
||||
become: yes
|
||||
when: ansible_service_mgr|lower == "openrc" or ansible_os_family|lower == "alpine"
|
||||
@@ -0,0 +1,33 @@
|
||||
---
|
||||
# file: tasks/services.yml
|
||||
|
||||
- name: services - enable/disable docker services
|
||||
when: ansible_service_mgr|lower != "openrc"
|
||||
with_items: "{{ docker_services|default([]) }}"
|
||||
service:
|
||||
name: "{{item.name}}"
|
||||
state: "{{item.state}}"
|
||||
enabled: "{{item.enabled}}"
|
||||
become: yes
|
||||
|
||||
- name: services - openrc - force service status
|
||||
when: ansible_service_mgr|lower == "openrc"
|
||||
shell: "kill -0 $(cat /run/{{item.name}}.pid) && [ ! -h /run/openrc/started/{{item.name}} ] && ln -s /etc/init.d/{{item.name}} /run/openrc/started/{{item.name}} && service {{item.name}} restart ||:"
|
||||
with_items: "{{ docker_services|default([]) }}"
|
||||
become: yes
|
||||
|
||||
- name: services - openrc - enable/disable docker services
|
||||
when: ansible_service_mgr|lower == "openrc"
|
||||
with_items: "{{ docker_services|default([]) }}"
|
||||
service:
|
||||
name: "{{item.name}}"
|
||||
state: "{{item.state}}"
|
||||
enabled: "{{item.enabled}}"
|
||||
runlevel: boot
|
||||
become: yes
|
||||
|
||||
- name: services - openrc - force service restart
|
||||
when: ansible_service_mgr|lower == "openrc"
|
||||
shell: "[ ! -d /var/lib/docker/tmp ] && service docker restart ||:"
|
||||
become: yes
|
||||
|
||||
@@ -32,3 +32,4 @@
|
||||
- files:
|
||||
- "local.yml"
|
||||
skip: true
|
||||
|
||||
|
||||
Reference in New Issue
Block a user