engonzal.proxmoxct
Ansibleロール: Proxmox
これは新しいコンテナをセットアップするためのロールです。Proxmoxノードに対してroot SSHが設定されている必要があります。また、Proxmoxホスト/クラスターに対するAPIアクセスも必要です。
このロールは主にAnsibleのローカルホストで実行されます。一部のタスクは"delegate_to"オプションを使用してリモートのProxmoxノードで実行されます。
ロール変数
コンテナをプロビジョニングするために使用できる変数がたくさんあります。必須の変数は使用例によって異なりますが、ほとんどはオプションです。
シンプルなコンテナ:
pve_node: pve1
pve_apiuser: root@pam
pve_apipass: myAPIpassword
pve_hostname: "newhostname"
pve_template: local:vztmpl/debian-9.0-standard_9.5-1_amd64.tar.gz
Proxmoxノードからのバインドマウントを含む詳細な例。クラスターにcephfsマウントを追加したので、各Proxmoxノードにマウントされています:
pve_node: pve1
pve_vmid: 114
pve_apiuser: engonzal@pve
pve_apipass: myAPIpassword
pve_api_host: pve1.domain.com
pve_hostname: "newhostname"
pve_template: local:vztmpl/debian-9.0-standard_9.5-1_amd64.tar.gz
pve_netif:
net0: "name=eth0,gw=192.168.84.1,ip=192.168.84.20/24,bridge=vmbr0"
pve_cores: 2
pve_mem: 2048
pve_swap: "{{ pve_mem }}"
pve_guest_pass: myContainerRootPassword
pve_search: domain.com
pve_dns: '192.168.84.1'
pve_storage: ceph_storage_ct
pve_unprivileged: yes
pve_ssh: "ssh-rsa myPublicKey engonzal@hostname"
pve_custom_mounts:
mp0: "/mnt/pve/cephfs_data/downloads/,mp=/downloads"
mp1: "/mnt/pve/cephfs_data/media,mp=/media"
例: プレイブック
Ansibleホストインベントリファイル
# hosts
[proxmox_containers]
test_server
Ansibleプレイブック
# proxmox.yml
---
- hosts: plex_app
connection: local
user: root
vars:
pve_node: pve1
pve_apiuser: root@pam
pve_apipass: myAPIpassword
pve_api_host: pve1.domain.com
pve_hostname: "newhostname"
pve_template: local:vztmpl/debian-9.0-standard_9.5-1_amd64.tar.gz
roles:
- engonzal.proxmoxct
Ansible実行コマンド
ansible-playbook -i hosts -l test_server proxmox.yml
例: プレイブック (高度な)
他のプレイを実行する後に遅延を追加することもできます:
---
- hosts: plex_app
connection: local
user: root
pre_tasks:
- name: 現在のPythonインタープリタを取得する (pipバーチャル環境用)
command: which python
register: which_interpreter
tags: always
changed_when: False
- name: システムPythonの代わりに現在のPythonパスを使用する
set_fact:
ansible_python_interpreter: "{{ which_interpreter.stdout }}"
tags: always
roles:
- name: engonzal.proxmoxct
tags: pve
post_tasks:
- name: 開始した場合はコンテナの起動時間を確保する
pause:
seconds: 20
when: pve_info_state.changed
- hosts: plex_app
user: root
vars:
ansible_python_interpreter: /usr/bin/python3 # bionic ctのために必要
package_list:
- vim
roles:
- engonzal.package
その他の例
DHCPの例:
pve_node: pve1
pve_vmid: 114
pve_apiuser: engonzal@pve
pve_apipass: myAPIpassword
pve_api_host: pve1.domain.com
pve_state: present
pve_hostname: "newhostname"
pve_template: local:vztmpl/debian-9.0-standard_9.5-1_amd64.tar.gz
pve_netif:
net0: "name=eth0,ip=dhcp,ip6=dhcp,bridge=vmbr0"
pve_storage: local-lvm
pve_custom_mounts:
mp0: "/mnt/pve/cephfs_data/downloads/,mp=/downloads"
mp1: "/mnt/pve/cephfs_data/media,mp=/media"
組織
私の用途のために、以下のように変数を整理しています(パスワードはAnsible Vaultで暗号化しています):
# group_vars/all
pve_apiuser: engonzal@pve
pve_apipass: myAPIpassword
pve_api_host: pve1.domain.com
pve_guest_pass: myContainerRootPassword
pve_search: domain.com
pve_dns: '192.168.84.1'
pve_unprivileged: yes
pve_ssh: "ssh-rsa myPublicKey engonzal@hostname"
# group_vars/plex
pve_node: pve3
pve_vmid: 114
pve_hostname: "plex"
pve_netif:
net0: "name=eth0,gw=192.168.84.1,ip=192.168.84.20/24,bridge=vmbr0"
pve_template: local:vztmpl/ubuntu-18.10-standard_18.10-1_amd64.tar.gz
pve_cores: 8
pve_mem: 4096
pve_custom_mounts:
mp0: "/mnt/pve/cephfs_data/media,mp=/media"
ライセンス
BSD
注意事項
Proxmox API情報は以下で確認できます: