Files
ansible_samba_tasks/tasks/setupacdc.yml
Jose c2736624d8 chore 📦: Update setupacdc.yml to include rootfs configuration
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.
2025-11-02 12:10:41 +01:00

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 }}"