Запуск и элементы управления ansible скриптами
ansible multi -a "hostname"Запуск через ansible playbook
ansible-playbook filename.yml---
- hosts: [host ip | host group | all]
    remote_user: []
    become: true
    tasks:
      - [task 1]
      - [task n]
---
- hosts: [host ip | host group | all]
    remote_user: []
    become: true
    tasks:
      - [task 1]
      - [task n]Параметры задачи
gather_facts: False Проводить сбор данных по умолчанию
ignore_errors: True Прекращать или нет работу при ошибке
Переменные из модулей
---
- name: Check if host is up and running
  hosts: all
  become: false
  gather_facts: false
  tasks:
    - name: Ping the remote server
      ping:
      register: result
      until: result is succeeded
      retries: 3
      delay: 10
    - name: Get system uptime
      command: uptime
      when: result is succeeded
      register: uptime_result
    - name: Show system uptime
      debug:
        var: uptime_result.stdout
      when: result is succeeded10: полученное значение из модуля ping сохраняется в переменной result
11: данное задание выполняется до тех пор, пока result не будет succeeded, но с ограничением кол-ва попыток (12) и задержкой между попытками (13)
17: задание 15 выполняется если result succeeded
18: полученное значение заносится в переменную uptime_result
21: вывод значения uptime_result
Условия (handlers)
when: ansible_os_family == "Debian"Получить список фактов:
- name: Show facts available on the system
  ansible.builtin.debug:
  var: ansible_factsВ папке /etc/ansible/facts.d/*.fact файлы с локальными фактами о машине. Обращение к фактам в yaml:
ansible_local.<fact file name>.<fact group inside file>.<varname>Создание новой переменной:
set_fact:<valname>=<...>Циклы (loops)
Цикл с объявленной переменной:
 - name: use apt to install multiple apps
   apt:
     name: '{{ app }}'
     state: latest
     update_cache: yes
     vars:
       app:
         - htop
         - mc
         - nload
     become: yesЦикл с необъявленной переменной:
- name: use apt to install multiple apps
  apt:
    name: '{{ item }}'
    state: latest
    update_cache: yes
    loop:
      - htop
      - mc
      - nload
    become: yesЦикл с переменной-словарем
- name: install python packages
  pip: name={{item.name}} version={{item.version}}
  become: True
  with_items:
    - {name=mezzanine, version=1.2.1}
	- {name=guincorn, version=3.2.9}Проверка ошибок выполнения
Проверяет условия и останавливает выполнение при нарушении
- name: Проверка значения переменной
  assert:
    that:
      - my_variable == "expected_value"Примеры из документации:
- name: A single condition can be supplied as string instead of list
  ansible.builtin.assert:
    that: "ansible_os_family != 'RedHat'"
- name: Use yaml multiline strings to ease escaping
  ansible.builtin.assert:
    that:
      - "'foo' in some_command_result.stdout"
      - number_of_the_counting == 3
      - >
        "reject" not in some_command_result.stderr
- name: After version 2.7 both 'msg' and 'fail_msg' can customize failing assertion message
  ansible.builtin.assert:
    that:
      - my_param <= 100
      - my_param >= 0
    fail_msg: "'my_param' must be between 0 and 100"
    success_msg: "'my_param' is between 0 and 100"
- name: Please use 'msg' when ansible version is smaller than 2.7
  ansible.builtin.assert:
    that:
      - my_param <= 100
      - my_param >= 0
    msg: "'my_param' must be between 0 and 100"
- name: Use quiet to avoid verbose output
  ansible.builtin.assert:
    that:
      - my_param <= 100
      - my_param >= 0
    quiet: true
 
                
No comments to display
No comments to display