emo 0fb9c88890 i-1 Introduces an Ansible playbook for linux-container with SSH access
# Issue

This PR implements the following [issue](the-liberated-edge/test-linux-containers#1).

# Acceptance criteria

- [x] A playbook for launching LXD Debian container with parameterized container name and OS version has been implemented.
- [x] The newly launched Linux containers can be connected to and administered via SSH.
- [x] The playbook has been part of an Ansible collection named theliberatededge.test_linux_containers.
- [x] Setup and getting started technical documentation has been added to README.md.

Co-authored-by: emo <esimeonov@gmail.com>
Reviewed-on: #2
2024-01-07 00:48:19 +00:00

34 lines
1.3 KiB
YAML

---
- name: Verify
hosts: localhost
gather_facts: false
tasks:
- name: find current container state
ansible.builtin.command: lxc ls {{ item.name }}
register: state
with_items: '{{ molecule_yml.platforms }}'
- name: verify launched container is running
ansible.builtin.assert:
that: state.results[0].rc == 0 and "RUNNING" in state.results[0].stdout
- name: find container ip address
ansible.builtin.command: lxc ls -c=4 -f=compact {{ item.name }}
register: ipv4_raw
with_items: '{{ molecule_yml.platforms }}'
- name: set ipv4 address string as a fact
ansible.builtin.set_fact:
ipv4: '{{ ipv4_raw.results[0].stdout_lines[1] }}'
- name: extract ipv4 address of the linux container
ansible.builtin.set_fact:
ipv4: "{{ ipv4 | regex_search('([0-9]+.[0-9]+.[0-9]+.[0-9]+)') }}"
- name: load root password from environment variable
ansible.builtin.set_fact:
pwd: "{{ lookup('ansible.builtin.env', 'LTE_CONTAINER_ROOT_PWD') }}"
- name: connect via ssh to linux container
ansible.builtin.shell:
cmd: |
sshpass -p{{ pwd }} ssh -o ConnectTimeout=1 root@{{ ipv4 }} exit;
register: ssh
- name: verify ssh connection to linux container
ansible.builtin.assert:
that: ssh.rc == 0