===== Переменные в ansible =====
==== Приоритет переменных ====
{{ :linux:ansible:priority.png |}}
=== Переменная в задаче ===
---
- name: user
hosts: demo #наша группа серверов
tasks:
- name: Create user # название таска
vars:
user: werwolf2
user: # название модуля
name: "{{ user }}" # имя нового пользователя
state: present # создать пользователя если его нет
become: true # использовать sudo
=== Переменная для всех задач Playbook ===
---
- name: user
hosts: demo #наша группа серверов
vars:
test: test1
tasks:
- name: Create user # название таска
user: # название модуля
name: "{{ user }}" # имя нового пользователя
state: present # создать пользователя если его нет
become: true # использовать sudo
=== Переменные в вынесенном файле ===
---
- name: user
hosts: demo #наша группа серверов
vars_files:
- ./my_vars.yaml
tasks:
- name: Create user # название таска
user: # название модуля
name: "{{ user }}" # имя нового пользователя
state: present # создать пользователя если его нет
become: true # использовать sudo
=== Переменные подключаемые из файла по умолчанию для определенной группы (к примеру demo) ===
Структура папок для подключения переменных из файла vars.yml
📁 ansible-demo
+---📁 group_vars
| +---📁 demo
| +---vars.yml
\---host.ini
\---user.yml
сам файл user.yml
---
- name: user
hosts: demo
tasks:
- name: Create user
user:
name: "{{ user }}"
state: present
become: true
ansible-playbook -i hosts.ini user.yml -K
=== Переменные подключаемые из файла по умолчанию для хостов ===
📁 ansible-demo
+---📁 host_vars
| +---127.0.0.1.yaml
\---host.ini
\---user.yml
сам файл user.yml
---
- name: user
hosts: demo
tasks:
- name: Create user
user:
name: "{{ user }}"
state: present
become: true
ansible-playbook -i hosts.ini user.yml -K
==== Переменные в файле inventory ====
[demo]
127.0.0.1 ansible_user=werwolf ansible_port=2222 user=werwolf
==== Сгруппировать хосты ====
📁 ansible-demo
+---📁 demo-server
| +---demo
| \---📁 group_vars
| +---📁 demo
| +---vars.yml
\---user.yml
demo
[demo]
127.0.0.1 ansible_user=werwolf ansible_port=2222
user.yml
---
- name: user
hosts: demo
tasks:
- name: Create user
user:
name: "{{ user }}"
state: present
become: true
all.yaml
user: werwolf
Выполним ansible
ansible-playbook -i demo-server user.yml -K
==== Переменная через extra-vars ====
ansible-playbook -i demo-server user.yml -K --extra-vars "user=werwolf"
==== vars_prompt ====
---
- name: user
hosts: demo
vars_prompt:
- name: user
prompt: "Введите пользователя"
private: no
tasks:
- name: Create user
user:
name: "{{ user }}"
state: present
become: true
werwolf@werwolf-System-Product-Name:~/ansible-demo$ ansible-playbook -i demo-server user.yml -K
BECOME password:
Введите пользователя: werwolf