какова цель файла main.yml в папке vars в роли ansible? - PullRequest
5 голосов
/ 12 июля 2020

моя задача - скопировать файл в папку с файлами, шаблон из папки шаблонов на удаленный хост ``

файл шаблона не имеет ничего, кроме текста.

templates / templateexample.txt.j2 => Это пример шаблона для передачи.

vars / main.yml

---
project_files:
  files:
    - src: "examplefile1.txt"
      dst: "~/examplefile1.txt"
      mode: '0755'
      force: false
  templates:
    - src: "templateexample.txt.j2"
      dst: "~/templateexample.txt"
      mode: '0755'
      force: false

Ответы [ 2 ]

1 голос
/ 14 июля 2020

# file: copy-stati c .yml

  • name: Копировать копию файла: src = examplefile1.txt dest = / home / user / example.txt

# file: copy-template.yml

  • name: sample template - x template: sr c: templateexample.txt.j2 dest: /home/user/newexample.txt with_items : var_x

# файл: ngnix.yml

- name: install nginx
 apt: name=nginx update_cache=yes state=latest
- name: displaying message
  debug: msg="yayy!! nginx installed"
  

# файл: mainplaybook.yml

  • хосты: localhost соединение: локальное становится: да стать_метод: sudo роли:
    • fresco_roles / sample_role

# file: tasks / main.yml

  • включить: nginx .yml
  • include: copy-stati c .yml
  • include: copy-template.yml

# file: hosts [localhost] localhost

# file: vars / main.yml

project_files: files: - sr c: "examplefile1.txt" dst: "~ / examplefile1.txt" mode: '0755' force: ложные шаблоны: - sr c: "templateexample.txt.j2" dst: "~ / templateexample.txt" mode: '0755' force: false var_x:

  • 'переменная x' var_y:
  • 'переменная y'
1 голос
/ 12 июля 2020

Q: Для чего нужен файл main.yml в папке vars в ansible роли?

A: Основная причина - настроить переменные роли по умолчанию.

Переменные, определенные в role / vars / main.yml , переопределяют все переменные, определенные в ролях по умолчанию, inventory, group_vars, host_vars и все переменные, определенные в игре до того, как роль была включен в спектакль. См. Приоритет переменных: где мне поместить переменную? для подробностей.

Например, давайте создадим playbook

shell> cat playbook.yml 
- hosts: localhost
  vars:
    test_var: test_var defined in the playbook vars
  roles:
    - role1

и создадим роль с пустым role / role1 / vars / main.yml и простая задача отладки в roles / role1 / tasks / main.yml

shell> cat roles/role1/tasks/main.yml
- debug:
    var: test_var

shell> cat roles/role1/vars/main.yml 
---
# vars file for role1

Игра будет отображать определенную переменную в переменных пьес

shell> ansible-playbook test-14.yml 
  ...
  test_var: test_var defined in the playbook vars

Теперь определите переменную test_var в role1 / vars / main.yml

shell> cat roles/role1/vars/main.yml 
---
# vars file for role1
test_var: test_var defined in the role vars

Переменная, определенная в переменных роли , заменяет переменную, определенную в переменных playbook .

shell> ansible-playbook playbook.yml 
  ...
  test_var: test_var defined in the role vars

Примечания:

  • Не помещайте vars / main.yml ролей в Ansible Galaxy git. Это сохранит локальные настройки от обновлений и обновлений.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...