2025-11-02 08:07:57 +01:00
|
|
|
---
|
|
|
|
|
- name: Create and provision LXC container on Proxmox
|
|
|
|
|
hosts: node0
|
2025-11-01 18:47:03 +01:00
|
|
|
gather_facts: no
|
2025-11-02 08:07:57 +01:00
|
|
|
become: yes
|
|
|
|
|
become_user: root
|
|
|
|
|
|
2025-11-01 18:47:03 +01:00
|
|
|
vars:
|
2025-11-02 09:20:37 +01:00
|
|
|
node_ip: "{{ hostvars['node0']['ansible_host'] }}"
|
2025-11-01 18:47:03 +01:00
|
|
|
mac_address: "8E:90:31:DE:31:36"
|
2025-11-02 08:07:57 +01:00
|
|
|
|
|
|
|
|
container_id: 200
|
2025-11-02 08:24:28 +01:00
|
|
|
container_template: "/var/lib/vz/template/cache/debian-13-standard_13.1-1_amd64.tar.zst"
|
2025-11-02 08:20:59 +01:00
|
|
|
container_ostype: debian
|
2025-11-02 08:07:57 +01:00
|
|
|
container_hostname: "{{ addc_hostname }}"
|
2025-11-02 08:36:08 +01:00
|
|
|
container_password: 123456
|
2025-11-02 08:07:57 +01:00
|
|
|
container_storage: local-lvm
|
|
|
|
|
container_rootfs_size: 8G
|
|
|
|
|
container_memory: 1024
|
2025-11-02 08:20:59 +01:00
|
|
|
container_swap: 256
|
2025-11-02 08:07:57 +01:00
|
|
|
container_cores: 2
|
2025-11-02 08:36:08 +01:00
|
|
|
container_net: name=eth0,bridge=vmbr0,ip={{ addc_ansible_host }}/24,gw={{ location_gateway }},hwaddr={{ mac_address }}
|
2025-11-02 08:24:28 +01:00
|
|
|
container_features: "keyctl=1,nesting=1,mount=cifs"
|
2025-11-02 08:27:47 +01:00
|
|
|
container_description: default lxc
|
2025-11-02 08:36:08 +01:00
|
|
|
container_onboot: 1
|
|
|
|
|
container_protection: 0
|
|
|
|
|
container_unprivileged: 1
|
2025-11-02 08:40:18 +01:00
|
|
|
# container_tags: "ansible_managed,test"
|
|
|
|
|
container_tags:
|
|
|
|
|
- ansible_managed
|
|
|
|
|
- test
|
2025-11-02 08:20:59 +01:00
|
|
|
|
2025-11-01 18:47:03 +01:00
|
|
|
tasks:
|
2025-11-02 08:07:57 +01:00
|
|
|
|
2025-11-02 09:06:44 +01:00
|
|
|
- name: Create LXC container {{ container_hostname }} with id {{ container_id }} using pct command on shell
|
2025-11-02 07:35:28 +01:00
|
|
|
ansible.builtin.shell: |
|
2025-11-02 08:07:57 +01:00
|
|
|
pct create {{ container_id }} {{ container_template }} \
|
2025-11-02 08:20:59 +01:00
|
|
|
-ostype {{ container_ostype }} \
|
2025-11-02 08:07:57 +01:00
|
|
|
-hostname {{ container_hostname }} \
|
2025-11-02 08:36:08 +01:00
|
|
|
-password {{ container_password }} \
|
2025-11-02 08:07:57 +01:00
|
|
|
-cores {{ container_cores }} \
|
|
|
|
|
-memory {{ container_memory }} \
|
2025-11-02 08:20:59 +01:00
|
|
|
-swap {{ container_swap }} \
|
2025-11-02 08:36:08 +01:00
|
|
|
-net0 {{container_net}} \
|
2025-11-02 08:07:57 +01:00
|
|
|
-storage {{ container_storage }} \
|
2025-11-02 08:27:47 +01:00
|
|
|
-description "{{ container_description }}" \
|
2025-11-02 08:36:08 +01:00
|
|
|
-onboot {{ container_onboot }} \
|
|
|
|
|
-protection {{ container_protection }} \
|
|
|
|
|
-unprivileged {{ container_unprivileged }} \
|
2025-11-02 08:45:09 +01:00
|
|
|
-tags "{{ container_tags | join(',') }}" \
|
2025-11-02 08:07:57 +01:00
|
|
|
-features {{ container_features }}
|
2025-11-02 08:20:59 +01:00
|
|
|
args:
|
|
|
|
|
creates: "/etc/pve/lxc/{{ container_id }}.conf"
|
|
|
|
|
|
2025-11-02 08:07:57 +01:00
|
|
|
# -timezone: {{ localization_timezone }} \
|
2025-11-02 09:20:37 +01:00
|
|
|
|
|
|
|
|
- name: Start the LXC container {{ container_hostname }}
|
|
|
|
|
ansible.builtin.command:
|
|
|
|
|
cmd: pct start {{ container_id }}
|
|
|
|
|
register: start_result
|
|
|
|
|
changed_when: "'started' in start_result.stdout or start_result.rc == 0"
|
|
|
|
|
|
|
|
|
|
# - name: Wait for the container to get an IP address
|
|
|
|
|
# ansible.builtin.shell: "pct exec {{ container_id }} -- hostname -I"
|
|
|
|
|
# register: container_ip
|
|
|
|
|
# until: container_ip.stdout != ""
|
|
|
|
|
# retries: 10
|
|
|
|
|
# delay: 5
|
|
|
|
|
|
|
|
|
|
# - name: Get container IP
|
|
|
|
|
# ansible.builtin.shell: "pct exec {{ container_id }} -- hostname -I | awk '{print $1}'"
|
|
|
|
|
# register: lxc_ip
|
|
|
|
|
# changed_when: false
|
|
|
|
|
|
|
|
|
|
# - name: Add container to in-memory inventory
|
|
|
|
|
# ansible.builtin.add_host:
|
|
|
|
|
# name: "{{ container_hostname }}"
|
|
|
|
|
# ansible_host: "{{ lxc_ip.stdout }}"
|
|
|
|
|
# ansible_user: root
|
|
|
|
|
|
2025-11-02 09:53:07 +01:00
|
|
|
- name: Provision dc1 LXC
|
2025-11-02 09:33:36 +01:00
|
|
|
hosts: dc1
|
2025-11-02 09:20:37 +01:00
|
|
|
gather_facts: false
|
2025-11-02 09:53:07 +01:00
|
|
|
become: true
|
|
|
|
|
|
|
|
|
|
tasks:
|
|
|
|
|
|
|
|
|
|
- name: Ensure SSH authorized keys are present
|
|
|
|
|
ansible.posix.authorized_key:
|
|
|
|
|
user: root
|
|
|
|
|
key: "{{ item }}"
|
|
|
|
|
state: present
|
|
|
|
|
loop: "{{ ssh_public_keys }}"
|
|
|
|
|
|
|
|
|
|
- name: Update and install useful packages
|
|
|
|
|
ansible.builtin.package:
|
|
|
|
|
name:
|
|
|
|
|
- nano
|
|
|
|
|
- tzdata
|
|
|
|
|
- openssh-server
|
|
|
|
|
state: present
|