Добрый день.
Сегодня краткая заметка и описание работы ansible модуля для Proxmox.
Модуль Proxmox для Ansible стал доступен с версии 2.0.0 (Описание)
Был создан файл hosts с содержимым:
[pve]
Сегодня краткая заметка и описание работы ansible модуля для Proxmox.
Модуль Proxmox для Ansible стал доступен с версии 2.0.0 (Описание)
Был создан файл hosts с содержимым:
[pve]
192.168.0.125
И пара playbook:
- crate_ct_manual.yml
- remove_ct_manual.yml
Содержимое create_ct_manual.yml:
---
- hosts: pve
gather_facts: False
vars_prompt:
- name: "VMID"
prompt: "Enter VMID for CT: "
private: no
- name: "IP"
prompt: "Enter IP for new CT: "
private: no
- name: "HOSTNAME"
prompt: "Enter hostname for new CT: "
default: "testing.com"
private: no
- name: "PASSWD"
prompt: "Enter root password: "
default: "password"
- name: "ROLE"
prompt: "Enter role of CT (frontend/backend): "
private: no
tasks:
- name: Install frontend
local_action: 'lineinfile dest=/etc/ansible/hosts line="{{ IP }}" insertafter="^\[backend\]"'
when: ROLE == "backend"
- name: Install backend
local_action: 'lineinfile dest=/etc/ansible/hosts line="{{ IP }}" insertafter="^\[frontend\]"'
when: ROLE == "frontend"
- name: Create CT {{ VMID }}
proxmox: vmid={{ VMID }} api_user='root@pam' api_password='{{ lookup('env','PROXMOX_PASSWORD') }}' api_host='192.168.0.125' hostname='{{ HOSTNAME }}' ostemplate='local:vztmpl/ubuntu_12.04_i386_clear_with_ansible_key.tar.gz' node='domain' state=present ip_address='{{ IP }}' password='{{ PASSWD }}' timeout='150' onboot='yes'
- name: Start CT {{ VMID }}
proxmox: vmid={{ VMID }} api_user='root@pam' api_password='{{ lookup('env','PROXMOX_PASSWORD') }}' api_host='192.168.0.125' state=started
В поле hosts для группы pve из файла hosts мы запрашиваем переменные для внесения основных сведений о создаваемой контейнере.
VMID - ID-контейнера
IP - IP-адрес контейнера
HOSTNAME - хостнейм для контейнера, с дефолтным значением testing.com, если никакие данные не были введены
PASSWD - пароль root для контейнера, с дефолтным значением password
ROLE - это поле было создано для других плейбуков, которое добавляет в нужную группу в файле hosts IP-адрес сервера. Описание этих ролей отложу для другой заметки.
Очень важно, что на хост ноде с Proxmox обязательно должны быть установлены последние версии Python библиотек Proxmoxer и requests.
Пароль для взаимодействия с Proxmox берется из переменной окружения PROXMOX_PASSWORD, т.е. перед использованием нужно экспортировать данную переменную:
# export PROXMOX_PASSWORD=password
Содержимое remove_ct_manual.yml:
---
- hosts: pve
vars_prompt:
- name: "VMID"
prompt: "Enter VMID for CT: "
private: no
tasks:
- name: Stopped CT {{ VMID }}
proxmox: vmid={{ VMID }} api_user='root@pam' api_password='{{ lookup('env','PROXMOX_PASSWORD') }}' api_host='192.168.0.125' state=stopped
- name: Remove CT {{ VMID }}
proxmox: vmid={{ VMID }} api_user='root@pam' api_password='{{ lookup('env','PROXMOX_PASSWORD') }}' api_host='192.168.0.125' state=absent
Теперь небольшой playbook для остановки и удаления контейнера с указанным ID.
Вот пара примеров выполнения данных playbook'ов:
# ansible-playbook create_ct_manual.yml
Enter VMID for CT: : 109
Enter IP for new CT: : 192.168.0.119
Enter hostname for new CT: [testing.com]: backend3.com
Enter root password: [password]:
Enter role of CT (frontend/backend):
PLAY ***************************************************************************
TASK [setup] *******************************************************************
ok: [192.168.0.125]
TASK [Create CT 109] ***********************************************************
changed: [192.168.0.125]
PLAY RECAP *********************************************************************
192.168.0.125 : ok=2 changed=1 unreachable=0 failed=0
# ansible-playbook remove_ct_manual.yml
Enter VMID for CT: : 109
PLAY ***************************************************************************
TASK [setup] *******************************************************************
ok: [192.168.0.125]
TASK [Stopped CT 109] **********************************************************
changed: [192.168.0.125]
TASK [Remove CT 109] ***********************************************************
changed: [192.168.0.125]
PLAY RECAP *********************************************************************
192.168.0.125 : ok=3 changed=2 unreachable=0 failed=0
Комментариев нет:
Отправить комментарий