This commit is contained in:
Сергей Антропов
2025-03-05 17:38:11 +03:00
parent 93333c3598
commit 78359193fe
12 changed files with 81 additions and 17 deletions

View File

@@ -56,6 +56,11 @@ shell:
docker compose exec ansible-molecule bash docker compose exec ansible-molecule bash
# Создание новой роли с помощью Molecule
create:
docker compose run --rm ansible-molecule sh -c "ansible-galaxy role init $(ROLE_NAME) && cd $(ROLE_NAME) && molecule init scenario
#docker compose run --rm ansible-molecule sh -c "molecule create"
# Запуск тестов Molecule # Запуск тестов Molecule
test: test:
docker compose run --rm ansible-molecule sh -c "molecule test" docker compose run --rm ansible-molecule sh -c "molecule test"
@@ -65,10 +70,6 @@ test:
dependencies: dependencies:
docker compose run --rm ansible-molecule sh -c "ansible-galaxy role install -r /workspace/requirements.yml" docker compose run --rm ansible-molecule sh -c "ansible-galaxy role install -r /workspace/requirements.yml"
# Создание новой роли с помощью Molecule
create:
docker compose run --rm ansible-molecule sh -c "molecule create"
# Шифрование файла с помощью Ansible Vault # Шифрование файла с помощью Ansible Vault
encrypt: encrypt:
docker compose run --rm ansible-molecule sh -c "ansible-vault encrypt --vault-password-file /workspace/$(VAULT_PASSWORD_FILE) /workspace/role/$(FILE)" docker compose run --rm ansible-molecule sh -c "ansible-vault encrypt --vault-password-file /workspace/$(VAULT_PASSWORD_FILE) /workspace/role/$(FILE)"

View File

@@ -0,0 +1,13 @@
# Molecule managed
{% if item.registry is defined %}
FROM {{ item.registry.url }}/{{ item.image }}
{% else %}
FROM {{ item.image }}
{% endif %}
{% if item.dockerfile is defined %}
{% for line in item.dockerfile %}
{{ line }}
{% endfor %}
{% endif %}

View File

@@ -0,0 +1,8 @@
Installation
============
To install Molecule, run the following command:
.. code-block:: bash
pip install molecule docker

View File

@@ -0,0 +1,5 @@
---
- name: Converge
hosts: all
roles:
- role: my_new_role

View File

@@ -0,0 +1,11 @@
---
- name: Create
hosts: localhost
connection: local
tasks:
- name: Create molecule instance(s)
molecule_docker:
platform: "{{ item }}"
with_items: "{{ molecule_yml.platforms }}"
loop_control:
label: "{{ item.name }}"

View File

@@ -0,0 +1,12 @@
---
- name: Destroy
hosts: localhost
connection: local
tasks:
- name: Destroy molecule instance(s)
molecule_docker:
platform: "{{ item }}"
state: absent
with_items: "{{ molecule_yml.platforms }}"
loop_control:
label: "{{ item.name }}"

View File

@@ -0,0 +1,2 @@
[all]
instance ansible_connection=docker

View File

@@ -4,23 +4,14 @@ dependency:
driver: driver:
name: docker name: docker
platforms: platforms:
- name: web1 - name: instance
image: geerlingguy/docker-ubuntu2004-ansible:latest image: geerlingguy/docker-ubuntu2004-ansible:latest
pre_build_image: true pre_build_image: true
groups:
- webservers
- name: db1
image: geerlingguy/docker-ubuntu2004-ansible:latest
pre_build_image: true
groups:
- dbservers
provisioner: provisioner:
name: ansible name: ansible
inventory: inventory:
group_vars: host_vars:
webservers: instance:
ansible_user: root ansible_connection: docker
dbservers:
ansible_user: root
verifier: verifier:
name: ansible name: ansible

View File

@@ -0,0 +1,4 @@
---
- name: Prepare
hosts: all
tasks: []

View File

@@ -0,0 +1,13 @@
import os
import testinfra.utils.ansible_runner
testinfra_hosts = testinfra.utils.ansible_runner.AnsibleRunner(
os.environ['MOLECULE_INVENTORY_FILE']).get_hosts('all')
def test_hosts_file(host):
f = host.file('/etc/hosts')
assert f.exists
assert f.user == 'root'
assert f.group == 'root'

View File

@@ -0,0 +1,4 @@
---
- name: Verify
hosts: all
tasks: []