Интегрируйте словарь во все задачи и просматривайте его в Ansible - PullRequest
0 голосов
/ 19 сентября 2019

Эй, все еще новичок в Ansible.

Я создал книгу игр (тест), в которой будет выполнено скользящее обновление для кластера Mariadb, который использует HAproxy в качестве фунта.

Iпонятия не имею, как использовать словарь (нижнюю часть кода) для всех моих задач в игре.Кроме того, он должен зацикливаться, как первый сервер 1, затем сервер 3, затем сервер 2, а затем сервер 4. Идея состоит в том, что если хост или ip изменились, вам придется изменить его только в словаре.

Напримерtask1 должен использовать key.value host1, такой же, как для task2, и когда его цикл done для следующего хоста.

Я пытался использовать модуль vars, но он работал только для конкретной задачи.Я думал об использовании папки Vars, но я не использую архитектуру ролей.

- hosts: DBserver
  become: yes
  tasks:
  - name: disable the haproxy server
    replace:
      path: /etc/haproxy/haproxy.cfg
      regexp: "{{ item }}"
      replace: 'server "{{}}" "{{}}"  check weight 0'
    with_items:
    - 'server "{{}}" "{{}}"  check weight 1' 

- hosts: "{{}}"
  become: yes
  tasks:
  - name: stop the mariadb
    service:
      name: mariadb
      state: stopped

- hosts: DBserver
  become: yes
  tasks:
  replace:
    path: /etc/haproxy/haproxy.cfg
    regexp: "{{ item }}"
    replace: 'server "{{}}}" "{{}}"  check weight 1'
  with_items:
  - 'server "{{}}" "{{}}"  check weight 0' 


dictionary:
{ 'name': 'host1', 'key': 'ipxxx' }, { 'name': 'host2', 'key': 'ipxxxx' }, { 'name': 'host3', 'key': 'ipxxx' }, { 'name': 'host4', 'key': 'ipxxx' }

1 Ответ

0 голосов
/ 23 сентября 2019

Я решил свою проблему с этой игрой.

---
- hosts: clients
  become: yes
  serial: 1
  tasks:

  - name: disable the haproxy server
    replace:
      path: /etc/haproxy/haproxy.cfg
      regexp: "{{ item }}"
      replace: 'server {{ name }} {{ ip }}  check weight 0'
    with_items:
    - 'server {{ name }} {{ ip }}  check weight 1'

    delegate_to: deploy

  - name: stop the mariadb
    service:
      name: mariadb
      state: stopped

  - name: update mariadb
    apt:
      name: "{{ packages }}"
      state: latest
      update_cache: yes
    vars:
       packages:
       - mariadb-server
       - mariadb-client
       - mariadb-common

  - name: start the mariadb
    service:
      name: mariadb
      state: started

  - name: status mariadb
    shell: systemctl status mariadb
    register: server_status
  - name: debug
    debug:
       msg: "{{ server_status['stdout_lines'] }}"


  - name: enable proxy
    replace:
      path: /etc/haproxy/haproxy.cfg
      regexp: "{{ item }}"
      replace: 'server {{ name }} {{ ip }}  check weight 1'
    with_items:
    - 'server {{ name }} {{ ip }}  check weight 0'

    delegate_to: deploy

Я использовал host_vars, и это помогло в сочетании с Delegate_to.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...