Я новичок в Ansible. Я создал роль Ansible, которая содержит следующие задачи, которые будут развертывать виртуальную машину из шаблона, а затем настраивать виртуальную машину с пользовательскими параметрами ОС:
- create-vm.yml
- configure-vm.yml
Я могу успешно развернуть виртуальную машину из шаблона с помощью задачи «create-vm». Но после этого я хотел бы продолжить выполнение задачи «configure-vm». Поскольку файл playbooks / role-vm-deploy.yml содержит «localhost», как показано здесь ...
- hosts: localhost
roles:
- vm-deploy
gather_facts: no
connection: local
... следующая задача не выполняется успешно, потому что она пытается запустить задачу против "localhost", а не нового имени хоста виртуальной машины. С тех пор я добавил следующее в конец задачи "create-vm" ...
- name: Add host to group 'just_created'
add_host:
name: '{{ hostname }}.{{ domain }}'
groups: just_created
... но я не совсем уверен, что с этим делать. Я не могу понять, что еще мне нужно сделать и как вызвать новое имя хоста в задаче «configure-vm» вместо localhost.
Я выполняю playbook через CLI
# ansible-playbook playbooks/role-vm-deploy.yml
Я видел этот пост , который был отчасти полезен. Я также видел документацию Dynami c inventory , но на данном этапе это немного переборщило с моей головой. Любая помощь будет оценена. Спасибо!
Вот содержимое для плейбуков и задач
### playbooks -> role-vm-deploy.yml
- hosts: localhost
roles:
- vm-deploy
gather_facts: no
connection: local
### roles -> vm-deploy -> tasks -> main.yml
- name: Deploy VM
include: create-vm.yml
tags:
- create-vm
- name: Configure VM
include: configure-vm.yml
tags:
- configure-vm
### roles -> vm-deploy -> tasks -> create-vm.yml
- name: Clone the template
vmware_guest:
hostname: '{{ vcenter_hostname }}'
username: '{{ vcenter_username }}'
password: '{{ vcenter_pwd }}'
validate_certs: False
name: '{{ hostname }}'
template: '{{ template_name }}'
datacenter: '{{ datacenter }}'
folder: '/'
hardware:
memory_mb: '{{ memory }}'
num_cpus: '{{ num_cpu }}'
networks:
- label: "Network adapter 1"
state: present
connected: True
name: '{{ vlan }}'
state: poweredon
wait_for_ip_address: yes
### roles -> vm-deploy -> tasks -> configure-vm.yml
### This task is what I need to execute on the new hostname, but it attempts to execute on "localhost" ###
# Configure Networking
- name: Configure IP Address
lineinfile:
path: '{{ network_conf_file }}'
regexp: '^IPADDR='
line: 'IPADDR={{ ip_address }}'
- name: Configure Gateway Address
lineinfile:
path: '{{ network_conf_file }}'
regexp: '^GATEWAY='
line: 'GATEWAY={{ gw_address }}'
### roles -> vm-deploy -> defaults -> main.yml
- All of the variables reside here including "{{ hostname }}.{{ domain }}"