Передавать переменные между заданными ролями - PullRequest
1 голос
/ 10 ноября 2019

Как передать переменную, определенную в role1, в role2 в ansible?

Я хотел бы знать, как лучше всего это сделать

---
- name: deploy VM
  hosts: localhost
  roles:
    - deploy_vm ## Here I want to deploy the VM and get the VM name/IP address in variable.
    - deploy_tomcat_on_above_vm   ## I would like to use the VM name and pass it over the second role. 

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

1 Ответ

1 голос
/ 10 ноября 2019

Без каких-либо подробностей, короткий ответ таков: просто назначьте переменную в вашей первой роли и используйте ее во второй роли.

Между тем, это, вероятно, не лучший способ справиться с тем, что вы пытаетесьсделать. Я бы:

  1. Цель localhost (как уже сделано) для запуска роли deploy_vm.
  2. С этого момента:
    • Либо у вас есть динамическая инвентаризация для вашей инфраструктуры виртуализации и ваш новый виртуальный компьютер уже доступен (возможно, с группой, например tomcat_servers)
    • Или у вас нет динамической инвентаризации, и вам необходимо добавьте этот vm в инвентарь в памяти себя в той же игре.
      - name: Add my new created vm to in-memory inventory
        add_host:
          name: "{{ my_vm_fqdn_or_ip }}"
          groups:
            - tomcat_servers
          ansible_inventory_var_1: value1 #  Optional inventory vars...
          ansible_inventory_var_2: value2
      
  3. Теперь вы можете во второй игре в той же игровой книге целиться на свою машину напрямую, чтобы развернуть tomcat

    - name: Now I registered my new tomcat vm(s), go for install
      hosts: tomcat_servers
    
      roles:
        - role: deploy_tomcat
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...