Ansible Docker Container Management

I am in the process of writing my first Ansible in the world, and I need some steering. I have a simple network consisting of 3 virtual machines:

  • ansible01 - my Ansible server (Ubuntu)
  • db01 - DB (again, Ubuntu)
  • myapp01 - Ubuntu VM hosting the Java application

I configured my file /etc/ansible/hostsas follows:

[databases]
db01.example.com

[app_servers]
myapp01.example.com
myapp02.example.com

I configured SSH correctly and I can start ansible all ping -m, and Ansible can ping the DB server and application server nodes. So far so good.

I am trying to write three (3) game books related to dockers that will do the following:

  • , Docker [databases], [app_servers]; , Docker . , , .
  • // , node ( "role"?!?). , Id Ansible, , [app_servers].
  • // , node. , , myapp01 2 , fizz buzz. Id Ansible ( ) myapp01 s fizz, buzz - myapp02.

, ( , , ). . - setup_docker.yml:

- name: ensure docker engine is installed and running
  docker:
    name: *
    state: started

[databases], restart_app_servers.yml:

- name: restart app servers
  docker:
    name: app_servers
    state: restarted

node (restart_container.yml):

- name: restart a specific container
  docker:
    name: %name_of_container_and node%
    state: restarted

:

  • setup_docker.yml, , node ([databases] [app_servers]) ? , ( "*" ) .
  • restart_app_servers.yml, name? Ansible app_server?
  • restart_container.yml, "" ( /) node ? Id - node .
  • - ?

!

+3
1

, , . , , setup_docker.yml, restart_app_servers.yml restart_container.yml, -, . Docker, , .

:

  • setup_docker.yml, , node ([ ] [app_servers]) ? , ( "*" ) .

Playbook. , , :

#docker.yml
- hosts: all
  user: {{ privileged_user }} 
  gather_facts: false
  roles: 
    - install_docker

install_docker - :

- name: Add docker apt keys
  apt_key: keyserver=keyserver.ubuntu.com id=36A1D7869245C8950F966E92D8576A8BA88D21E9
- name: update apt 
  apt_repository: repo='deb https://get.docker.com/ubuntu docker main' state=present
- name: Install docker
  apt: pkg=lxc-docker update_cache=yes
  1. restart_app_servers.yml ? Ansible app_server?

, Docker , -? ( ). :

#group_vars/app-server
all_containers: [ 'container1', 'container2', 'container3',.. 'containern' ]

Play . Playbook:

#restart_app_containers.yml
- hosts: app_server
  user: {{ privileged_user }}
  gather_facts: false
  roles: 
    - restart_app_servers

:

#restart_app_servers.yml
- name: restart app servers
  docker:
    name: {{ item }}
    state: restarted
  with_items: all_containers
  1. restart_container.yml, "" ( /) node ? Id - node .

, . Dynamic Inventory,

#sample.yml
- hosts: Tag_name_{{ public_name }}
  user: {{ privileged_user }}
  gather_facts: false
  roles:
    - example

AWS. . , , . , :

ansible-playbook -i $INVENTORY_FILE -e container_name=$CONTAINER_NAME restart_single_container_on_single_host.yml 

:

- name: restart a specific container
  docker:
    name: {{ container_name }}
    state: restarted
+4

Source: https://habr.com/ru/post/1608456/


All Articles