Added a new parameter to the setupacdc.yml file to specify the root filesystem for containers, allowing for more flexible and efficient container setup. This change enables the use of local LVM as the root filesystem for containers, improving overall system performance and security.
129 lines
3.8 KiB
YAML
129 lines
3.8 KiB
YAML
---
|
|
- name: Create and provision LXC container on Proxmox
|
|
hosts: node0
|
|
gather_facts: no
|
|
become: yes
|
|
become_user: root
|
|
|
|
vars:
|
|
node_ip: "{{ hostvars['node0']['ansible_host'] }}"
|
|
mac_address: "8E:90:31:DE:31:36"
|
|
|
|
container_id: 200
|
|
container_template: "/var/lib/vz/template/cache/debian-13-standard_13.1-1_amd64.tar.zst"
|
|
container_ostype: debian
|
|
container_hostname: "{{ addc_hostname }}"
|
|
container_password: 123456
|
|
container_storage: local-lvm
|
|
container_rootfs_size: 8G
|
|
container_memory: 1024
|
|
container_swap: 256
|
|
container_cores: 2
|
|
container_net: name=eth0,bridge=vmbr0,ip={{ addc_ansible_host }}/24,gw={{ location_gateway }},hwaddr={{ mac_address }}
|
|
container_features: "keyctl=1,nesting=1,mount=cifs"
|
|
container_description: default lxc
|
|
container_onboot: 1
|
|
container_protection: 0
|
|
container_unprivileged: 1
|
|
container_pubkey: "{{ ssh_public_keys[0] }}"
|
|
container_tags:
|
|
- ansible_managed
|
|
- test
|
|
|
|
tasks:
|
|
|
|
- name: Combine SSH public keys into one file
|
|
ansible.builtin.copy:
|
|
dest: "{{ ssh_keys_file }}"
|
|
content: |
|
|
{% for key in ssh_public_keys %}
|
|
{{ key }}
|
|
{% endfor %}
|
|
mode: '0644'
|
|
|
|
- name: Create LXC container {{ container_hostname }} with id {{ container_id }} using pct command on shell
|
|
ansible.builtin.shell: |
|
|
pct create {{ container_id }} {{ container_template }} \
|
|
-ostype {{ container_ostype }} \
|
|
-hostname {{ container_hostname }} \
|
|
-password {{ container_password }} \
|
|
-ssh-public-keys {{ ssh_keys_file }} \
|
|
-cores {{ container_cores }} \
|
|
-memory {{ container_memory }} \
|
|
-swap {{ container_swap }} \
|
|
-net0 {{container_net}} \
|
|
-storage {{ container_storage }} \
|
|
-description "{{ container_description }}" \
|
|
-onboot {{ container_onboot }} \
|
|
-protection {{ container_protection }} \
|
|
-unprivileged {{ container_unprivileged }} \
|
|
-tags "{{ container_tags | join(',') }}" \
|
|
-rootfs [local-lvm]:4
|
|
-features {{ container_features }}
|
|
args:
|
|
creates: "/etc/pve/lxc/{{ container_id }}.conf"
|
|
|
|
# -timezone: {{ localization_timezone }} \
|
|
|
|
- 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 until container has an IP address
|
|
ansible.builtin.shell: "pct exec {{ container_id }} -- hostname -I | awk '{print $1}'"
|
|
register: lxc_ip
|
|
until: lxc_ip.stdout != ""
|
|
retries: 10
|
|
delay: 5
|
|
changed_when: false
|
|
|
|
- name: Wait for SSH to become available
|
|
ansible.builtin.wait_for:
|
|
host: "{{ lxc_ip.stdout }}"
|
|
port: 22
|
|
delay: 5
|
|
timeout: 60
|
|
|
|
- name: Provision dc1 LXC
|
|
hosts: dc1
|
|
gather_facts: false
|
|
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: Install useful packages
|
|
ansible.builtin.package:
|
|
name:
|
|
- nano
|
|
- tzdata
|
|
# - openssh-server
|
|
state: present
|
|
|
|
- name: Update all packages to their latest version
|
|
ansible.builtin.apt:
|
|
name: "*"
|
|
state: latest
|
|
|
|
- name: Remove useless packages from the cache
|
|
ansible.builtin.apt:
|
|
autoclean: yes
|
|
|
|
- name: Remove dependencies that are no longer required and purge their configuration files
|
|
ansible.builtin.apt:
|
|
autoremove: yes
|
|
purge: true
|
|
|
|
- name: Set timezone to {{ localization_timezone }}
|
|
community.general.timezone:
|
|
name: "{{ localization_timezone }}"
|