Proxmox Linux Container Creation with Ansible
# prox-lxc-create-prompt.yml
############################
---
- name: LXC Creation - Input required...
hosts: proxmox
vars_prompt:
- name: VM_pass
prompt: "Enter password for container root user"
private: yes
- name: VM_hostname
prompt: "Enter hostname for the container"
private: no
- name: VM_unprivileged
prompt: "Does the container need to mount drives (enter [true|false])"
private: no
roles:
- prox-lxc-create-prompt
# prox-lxc-create-prompt/tasks/main.yml
#######################################
---
- name: Create container
proxmox:
node: prox
api_user: root@pam
api_password: ********************************
api_host: prox
password: '{{ VM_pass }}'
disk: 8
hostname: '{{ VM_hostname }}'
ostemplate: 'local:vztmpl/centos-7-default_20190926_amd64.tar.xz'
netif: '{"net0":"name=eth0,ip=dhcp,bridge=vmbr0"}'
unprivileged: '{{ VM_unprivileged }}'
- name: Wait 15 seconds
wait_for:
timeout: 15
- name: Start container
proxmox:
node: prox
api_user: root@pam
api_password: ********************************
api_host: prox
hostname: '{{ VM_hostname }}'
state: started
- name: Wait 15 seconds
wait_for:
timeout: 15
- name: Retrieve VMID of provisioned container
shell: pct list | grep -i {{ VM_hostname }} | cut -f1 -d ' '
register: VMID
- debug: msg="{{VMID.stdout}}"
- name: Update/upgrade container
shell: pct exec {{ VMID.stdout }} -- bash -c 'yum update -y && yum upgrade -y'
- name: Install vim-enhanced
shell: pct exec {{ VMID.stdout }} -- bash -c 'yum install vim-enhanced -y'
- name: Install openssh-server
shell: pct exec {{ VMID.stdout }} -- bash -c 'yum install openssh-server -y'
- name: Enable sshd
shell: pct exec {{ VMID.stdout }} -- bash -c 'systemctl enable sshd'
- name: Start sshd
shell: pct exec {{ VMID.stdout }} -- bash -c 'systemctl start sshd'
- name: Set timezone/localtime - 1/2 - Remove default symlink for /etc/localtime
shell: pct exec {{ VMID.stdout }} -- bash -c 'rm etc/localtime -f'
- name: Set timezone/localtime - 2/2 - Set symlink US/Pacific for /etc/localtime
shell: pct exec {{ VMID.stdout }} -- bash -c 'ln -s /usr/share/zoneinfo/US/Pacific /etc/localtime'
- name: Reboot
shell: pct exec {{ VMID.stdout }} -- bash -c 'reboot'
- name: Wait 15 seconds
wait_for:
timeout: 15
- name: Configure root user .bashrc (green prompt)
lineinfile:
path: /root/.bashrc
regexp: '^export PS1="[\[\e[32m\]\u\[\e[m\]@\[\e[32m\]\h\[\e[m\] \[\e[32m\]\w\[\e[m\]] "'
state: present
line: export PS1="[\[\e[32m\]\u\[\e[m\]@\[\e[32m\]\h\[\e[m\] \[\e[32m\]\w\[\e[m\]] "