Size: a a a

2021 February 19

A

Alex in Ansible
Всем привет - может кто подскажет как можно сделать - я запускаю
ansible-playbook vm-create.yml в котором:

- name: setup role vm-create
 roles:
   - { role: vm-create,  hosts: localhost, tags: [ 'vm-create' ] }
при этом запускаеться роль
в роли формально есть две таски:

- name: create vm
 proxmox_kvm:
 ...

- name: vm resize disk
 connection: ssh
  shell: >
    qm resize '{{ item.vmid }}' scsi0 '{{ item.disk }}G'
  with_items: "{{ vms }}"

как можно сделать что бы - name: create vm запускался на 127.0.0.1 а - name: vm resize disk на удаленном сервере
я понимаю что можно это разнести на две роли и сделать что то вроде
ansible-playbook vm-create.yml
ansible-playbook vm-resize.yml
которые в invtntory смотрят на разные хосты - может есть другой способ что бы все оно осталось в одной роли
источник

AD

Alex Domoradov in Ansible
разнеси в разные плеи
источник

A

Alex in Ansible
то есть как для второй таски можно переопределить host
источник

AD

Alex Domoradov in Ansible
и запускай каждый на нужном хосте
источник

AD

Alex Domoradov in Ansible
нет
источник

AD

Alex Domoradov in Ansible
нужно вынести в отдельный плей
источник

AD

Alex Domoradov in Ansible
либо как костыль юзать delegate_to
источник

A

Alex in Ansible
в отдельный плей?
источник

A

Alex in Ansible
не совсем понял что имееться в виду
источник

L

Lamobot in Ansible
Alex Domoradov
либо как костыль юзать delegate_to
Можно ещё использовать
vars:
 ansible_connection: local
источник

A

Alex in Ansible
Lamobot
Можно ещё использовать
vars:
 ansible_connection: local
это в main роли прописать для определенной таски?
источник

AD

Alex Domoradov in Ansible
- name: PREPARE COT ENVIRONMENT
 hosts: nodes
 gather_facts: no

 roles:
   - { role: common }


- name: SETUP DATABASE
 hosts: database
 gather_facts: no

 roles:
   - { role: database }
источник

AD

Alex Domoradov in Ansible
два плея - у каждого свои хосты
источник

L

Lamobot in Ansible
Alex
это в main роли прописать для определенной таски?
Смотря что вам нужно запускать на локалхосте. Если одну таску, то можно прямо в ней прописать
источник

AD

Alex Domoradov in Ansible
ну вместо ролей можно указывать и список тасков
источник

A

Alex in Ansible
ну у меня просто две их
источник

A

Alex in Ansible
- name: create vm  
 proxmox_kvm:  
 ...  
 
- name: vm resize disk  
 connection: ssh  
  shell: >  
    qm resize '{{ item.vmid }}' scsi0 '{{ item.disk }}G'  
  with_items: "{{ vms }}"
источник

AD

Alex Domoradov in Ansible
ну можно разнести на плеи, либо использовать delegate_to
источник

A

Alex in Ansible
Alex Domoradov
ну можно разнести на плеи, либо использовать delegate_to
так у меня одна роль - в которой main
источник

A

Alex in Ansible
ну как бы есть одна роль и просто нужно что бы одна таска пыполнялась локально а вторая на сервере
источник