You've already forked role_proxmox
feat: Manage container
This commit is contained in:
@@ -74,6 +74,23 @@ proxmox_instance_cloudinit_nameservers: ""
|
||||
proxmox_instance_cloudinit_searchdomains: null
|
||||
proxmox_instance_cloudinit_sshkeys: ""
|
||||
|
||||
# Proxmox VE instance (CT)
|
||||
proxmox_instance_cmode: tty
|
||||
proxmox_instance_disk_volumes: {}
|
||||
# Example:
|
||||
# storage: truenas-nfs
|
||||
# size: 5G
|
||||
proxmox_instance_features: []
|
||||
proxmox_instance_mount_volumes: []
|
||||
proxmox_instance_netif: {}
|
||||
proxmox_instance_ostemplate: ""
|
||||
proxmox_instance_ostype: auto
|
||||
proxmox_instance_password: ""
|
||||
proxmox_instance_startup: ""
|
||||
proxmox_instance_swap: 0
|
||||
proxmox_instance_timeout: 600
|
||||
proxmox_instance_unprivileged: true
|
||||
|
||||
## HA configuration
|
||||
proxmox_instance_ha:
|
||||
max_restart: 3
|
||||
|
||||
@@ -91,3 +91,14 @@
|
||||
current: "{{ proxmox_current_instances.proxmox_vms | map(attribute='name') | sort }}"
|
||||
expected: "{{ proxmox_node_instances.proxmox_vms | map(attribute='name') | sort }}"
|
||||
listen: Disable maintenance mode
|
||||
|
||||
- name: Restart instance
|
||||
community.proxmox.proxmox:
|
||||
api_host: "{{ proxmox_api_host }}"
|
||||
api_user: "{{ proxmox_api_user }}"
|
||||
api_token_id: "{{ proxmox_api_token_id }}"
|
||||
api_token_secret: "{{ proxmox_api_token_secret }}"
|
||||
vmid: "{{ proxmox_instance_vmid }}"
|
||||
node: "{{ proxmox_instance_node }}"
|
||||
state: restarted
|
||||
delegate_to: "{{ proxmox_delegate_to }}"
|
||||
|
||||
77
tasks/instance_ct.yml
Normal file
77
tasks/instance_ct.yml
Normal file
@@ -0,0 +1,77 @@
|
||||
---
|
||||
# tasks file for proxmox
|
||||
|
||||
- name: Get instance configuration file informations
|
||||
ansible.builtin.stat:
|
||||
path: /etc/pve/lxc/{{ proxmox_instance_vmid }}.conf
|
||||
become: true
|
||||
delegate_to: "{{ proxmox_delegate_to }}"
|
||||
register: proxmox_ct_configuration
|
||||
|
||||
- name: Manage instance
|
||||
community.proxmox.proxmox:
|
||||
api_host: "{{ proxmox_api_host }}"
|
||||
api_user: "{{ proxmox_api_user }}"
|
||||
api_token_id: "{{ proxmox_api_token_id }}"
|
||||
api_token_secret: "{{ proxmox_api_token_secret }}"
|
||||
cores: "{{ proxmox_instance_cores }}"
|
||||
disk_volume: "{{ proxmox_instance_disk_volumes }}"
|
||||
features: "{{ proxmox_instance_features if proxmox_ct_configuration.stat.exists else omit }}"
|
||||
hostname: "{{ inventory_hostname }}"
|
||||
memory: "{{ proxmox_instance_memory }}"
|
||||
mount_volumes: "{{ proxmox_instance_mount_volumes }}"
|
||||
netif: "{{ proxmox_instance_netif }}"
|
||||
node: "{{ proxmox_instance_node }}"
|
||||
ostemplate: "{{ proxmox_instance_ostemplate }}"
|
||||
ostype: "{{ proxmox_instance_ostype }}"
|
||||
password: "{{ omit if proxmox_instance_password | length == 0 else proxmox_instance_password }}"
|
||||
startup: "{{ omit if proxmox_instance_startup | length == 0 else proxmox_instance_startup }}"
|
||||
swap: "{{ proxmox_instance_swap }}"
|
||||
timeout: "{{ proxmox_instance_timeout }}"
|
||||
unprivileged: "{{ (proxmox_instance_unprivileged | int) if proxmox_ct_configuration.stat.exists else omit }}"
|
||||
update: true
|
||||
vmid: "{{ proxmox_instance_vmid }}"
|
||||
become: true
|
||||
delegate_to: "{{ proxmox_delegate_to }}"
|
||||
notify: Restart instance
|
||||
|
||||
- name: Ensure instance is started
|
||||
community.proxmox.proxmox:
|
||||
api_host: "{{ proxmox_api_host }}"
|
||||
api_user: "{{ proxmox_api_user }}"
|
||||
api_token_id: "{{ proxmox_api_token_id }}"
|
||||
api_token_secret: "{{ proxmox_api_token_secret }}"
|
||||
vmid: "{{ proxmox_instance_vmid }}"
|
||||
node: "{{ proxmox_instance_node }}"
|
||||
state: started
|
||||
delegate_to: "{{ proxmox_delegate_to }}"
|
||||
|
||||
- name: Manage cmode option
|
||||
ansible.builtin.lineinfile:
|
||||
path: /etc/pve/lxc/{{ proxmox_instance_vmid }}.conf
|
||||
regexp: '^cmode:'
|
||||
line: "cmode: {{ proxmox_instance_cmode }}"
|
||||
become: true
|
||||
delegate_to: "{{ proxmox_delegate_to }}"
|
||||
notify: Restart instance
|
||||
|
||||
- name: Manage features option
|
||||
ansible.builtin.lineinfile:
|
||||
path: /etc/pve/lxc/{{ proxmox_instance_vmid }}.conf
|
||||
regexp: '^features:'
|
||||
line: "features: {{ proxmox_instance_features | join(' ') }}"
|
||||
become: true
|
||||
delegate_to: "{{ proxmox_delegate_to }}"
|
||||
notify: Restart instance
|
||||
|
||||
- name: Manage unprivileged option
|
||||
ansible.builtin.lineinfile:
|
||||
path: /etc/pve/lxc/{{ proxmox_instance_vmid }}.conf
|
||||
regexp: '^unprivileged:'
|
||||
line: "unprivileged: {{ proxmox_instance_unprivileged | int }}"
|
||||
become: true
|
||||
delegate_to: "{{ proxmox_delegate_to }}"
|
||||
notify: Restart instance
|
||||
|
||||
- name: Flush handlers
|
||||
ansible.builtin.meta: flush_handlers
|
||||
@@ -24,3 +24,9 @@
|
||||
when:
|
||||
- proxmox_instance_type == "vm"
|
||||
- proxmox_instance_ha | length > 0
|
||||
|
||||
# Instance: ct
|
||||
- name: Import instance creation tasks
|
||||
ansible.builtin.include_tasks:
|
||||
file: instance_ct.yml
|
||||
when: proxmox_instance_type == "ct"
|
||||
|
||||
Reference in New Issue
Block a user