Skip to content

Commit fe930ec

Browse files
committed
Add simple fixs to Molecule tests for Docker
1 parent fec7069 commit fe930ec

File tree

10 files changed

+94
-31
lines changed

10 files changed

+94
-31
lines changed

ansible/roles/manual-jenkins/molecule/README.md

+65-6
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
## **Molecule:**
22

3-
Данная секция предназначена для запуска и выполнения тестов с помощью такого инструмента, как Molecule. Этот инструмент осуществляет предварительный запуск ролей на указанных платформах (Docker, Cloud и т.д.). Делается это для того, чтобы когда роль была написана или изменена, не приходилось выполнять её запуск непосредственно на реальных серверах, так это может привести к непредвиденным обстоятельствам.
3+
Данная секция предназначена для запуска и выполнения тестов с помощью такого инструмента, как `Molecule`. Этот инструмент осуществляет предварительный запуск ролей на указанных платформах (Docker, Cloud и т.д.). Делается это для того, чтобы когда роль была написана или изменена, не приходилось выполнять её запуск непосредственно на реальных серверах, так как это может привести к непредвиденным обстоятельствам.
44

55
### **Установка molecule:**
66

7-
Для того чтобы установить `molecule` локально со всеми зависимостями, выполните следующую команду в корне проекта:
7+
Для того чтобы установить `Molecule` локально со всеми зависимостями, выполните следующую команду в корне проекта:
88

99
```
10-
pip3 install -r requirements.txt
10+
pip3 install -r --user requirements.txt
1111
```
1212

1313
### **Запуск тестов в Docker:**
1414

15-
Тесты по отношению к данной роли могут быть выполнены на базе таких платформ, как Docker и AWS EC2. Чтобы запустить полный прогон, необходимо выполнить команду, указав путь к тому или иному виду теста. Так, например, чтобы запустить тесты в среде Docker, укажите желаемое семейство дистрибутивов, для которого хотите прогнать роль:
15+
Тесты по отношению к данной роли могут быть выполнены на базе таких платформ, как Docker и AWS EC2 (на данном этапе). Чтобы запустить полный прогон, необходимо выполнить команду, указав путь к тому или иному виду теста. Так, например, чтобы запустить тесты в среде Docker, укажите желаемое семейство дистрибутивов, для которого хотите прогнать роль:
1616

1717
```
1818
molecule test -s [docker-debian, docker-ubuntu, docker-suse, docker-redhat] # Укажите на выбор одно из семейств дистрибутивов Linux;
@@ -28,9 +28,68 @@ molecule test -s [docker-debian, docker-ubuntu, docker-suse, docker-redhat] # У
2828
molecule test -s [aws-debian, aws-ubuntu, aws-suse, aws-redhat] # Укажите на выбор одно из семейств дистрибутивов Linux;
2929
```
3030

31-
### **Прочие команды:**
31+
Однако перед запуском рекомендуется заполнить ряд переменных значениями, выраженных в `group_vars` в корне директории `ansible` в проекте, которые актуальны для вас: имя профиля, регион, тип инстанса и т.д. Там же указано описание для каждой переменной. Вот полный список переменных на данный момент:
3232

33-
Если вы хотите запустить прогон тестов без проверки идемпотентности, то для этого выполните следующую команду на выбор в зависимости от вашей платформы:
33+
```
34+
aws_profile: ""
35+
aws_region: ""
36+
aws_instance_type: ""
37+
aws_vpc_subnet_id: ""
38+
aws_vpc_id: ""
39+
aws_key_method: ""
40+
aws_default_ssh_user: ""
41+
aws_local_private_key: ""
42+
aws_local_public_key: ""
43+
aws_custom_key_name: ""
44+
aws_security_group_name: ""
45+
```
46+
47+
И ещё один аспект. Для каждого семейства дистрибутивов в AWS есть свои версии и реализации. Если по каким-то причинам вас не устраивают предоставленные мною версии дистрибутивов в файле molecule.yml для каждого из семейств или вы просто хотите протестировать те же роли на более старых или новых версиях, то в таком случае вы можете воспользоваться списком команд ниже для каждого из семейств. Эти команды выведут информацию в виде таблице, в которой будет представлен OwnerID семейства для AWS, а также полное имя самого образа, которое одинаково вне зависимости от используемого региона, в сравнении с AMI ID.
48+
49+
* Для **Ubuntu** это:
50+
```
51+
# Для Ubuntu 20.04
52+
aws ec2 describe-images --owners 099720109477 --filters "Name=name,Values=ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server*" --query "Images[*].[OwnerId,CreationDate,Name,ImageId]" --output table
53+
# Для Ubuntu 22.04
54+
aws ec2 describe-images --owners 099720109477 --filters "Name=name,Values=ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-amd64-server*" --query "Images[*].[OwnerId,CreationDate,Name,ImageId]" --output table
55+
# Для Ubuntu 24.04
56+
aws ec2 describe-images --owners 099720109477 --filters "Name=name,Values=ubuntu/images/hvm-ssd-gp3/ubuntu-*-24.04-amd64-server*" --query "Images[*].[OwnerId,CreationDate,Name,ImageId]" --output table
57+
```
58+
59+
* Для **Debian** это:
60+
```
61+
# Для Debian 10
62+
aws ec2 describe-images --owners 136693071363 --filters "Name=name,Values=debian-10-amd64-*" --query "Images[*].[OwnerId,CreationDate,Name,ImageId]" --output table
63+
# Для Debian 11
64+
aws ec2 describe-images --owners 136693071363 --filters "Name=name,Values=debian-11-amd64-*" --query "Images[*].[OwnerId,CreationDate,Name,ImageId]" --output table
65+
# Для Debian 12
66+
aws ec2 describe-images --owners 136693071363 --filters "Name=name,Values=debian-12-amd64-*" --query "Images[*].[OwnerId,CreationDate,Name,ImageId]" --output table
67+
```
68+
69+
* Для **SUSE** это:
70+
```
71+
# Для SLEL 15 (можно менять версии сервис)
72+
aws ec2 describe-images --owners 013907871322 --filters "Name=name,Values=suse-sles-15-sp5-*-x86_64" --query "Images[*].[OwnerId,CreationDate,Name,ImageId]" --output table
73+
```
74+
75+
* Для **Red Hat** это:
76+
```
77+
# Для RHEL 8
78+
aws ec2 describe-images --owners 309956199498 --filters "Name=name,Values=*RHEL-8.10*" --query "Images[*].[OwnerId,CreationDate,Name,ImageId]" --output table
79+
# Для RHEL 9
80+
aws ec2 describe-images --owners 309956199498 --filters "Name=name,Values=*RHEL-9.5*" --query "Images[*].[OwnerId,CreationDate,Name,ImageId]" --output table
81+
```
82+
83+
### **Прочие команды в Molecule:**
84+
85+
Если вы хотите только подготовить ресурсную базу, без прогона самих ролей, то для этого выполните следующую команду на выбор в зависимости от вашей платформы (в первую очередь актуально для облаков, где мы подготавливаем инфраструктуру):
86+
87+
```
88+
molecule create -s [docker-debian, docker-ubuntu, docker-suse, docker-redhat] # Укажите на выбор одно из семейств дистрибутивов Linux;
89+
molecule create -s [aws-debian, aws-ubuntu, aws-suse, aws-redhat] # Укажите на выбор одно из семейств дистрибутивов Linux;
90+
```
91+
92+
Если вы хотите запустить прогон тестов для роли без проверки идемпотентности, то для этого выполните следующую команду на выбор в зависимости от вашей платформы:
3493

3594
```
3695
molecule converge -s [docker-debian, docker-ubuntu, docker-suse, docker-redhat] # Укажите на выбор одно из семейств дистрибутивов Linux;

ansible/roles/manual-jenkins/molecule/docker-debian/molecule.yml

-4
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,3 @@ provisioner:
5353

5454
verifier:
5555
name: ansible
56-
57-
lint: |
58-
yamllint -c ../../../.yamllint .
59-
ansible-lint .

ansible/roles/manual-jenkins/molecule/docker-debian/verify.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,5 @@
1515
method: GET
1616
timeout: 30
1717
return_content: false
18-
validate_certs: no
19-
status_code: [200,403]
18+
validate_certs: false
19+
status_code: [200, 403]

ansible/roles/manual-jenkins/molecule/docker-redhat/molecule.yml

+20-4
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,26 @@ platforms:
2828
# published_ports:
2929
# - 8080:8080
3030

31+
- name: redhat8
32+
image: mdd13/ansible-docker-redhat:redhat8
33+
pre_build_image: true
34+
privileged: true
35+
override_command: false
36+
cgroup_parent: docker.slice
37+
cgroupns_mode: host
38+
security_opts:
39+
- seccomp=unconfined
40+
41+
- name: redhat9
42+
image: mdd13/ansible-docker-redhat:redhat9
43+
pre_build_image: true
44+
privileged: true
45+
override_command: false
46+
cgroup_parent: docker.slice
47+
cgroupns_mode: host
48+
security_opts:
49+
- seccomp=unconfined
50+
3151
provisioner:
3252
name: ansible
3353
env:
@@ -38,7 +58,3 @@ provisioner:
3858

3959
verifier:
4060
name: ansible
41-
42-
lint: |
43-
yamllint -c ../../../.yamllint .
44-
ansible-lint .

ansible/roles/manual-jenkins/molecule/docker-redhat/verify.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,5 @@
1515
method: GET
1616
timeout: 30
1717
return_content: false
18-
validate_certs: no
19-
status_code: [200,403]
18+
validate_certs: false
19+
status_code: [200, 403]

ansible/roles/manual-jenkins/molecule/docker-suse/molecule.yml

-4
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,3 @@ provisioner:
3838

3939
verifier:
4040
name: ansible
41-
42-
lint: |
43-
yamllint -c ../../../.yamllint .
44-
ansible-lint .

ansible/roles/manual-jenkins/molecule/docker-suse/verify.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,5 @@
1515
method: GET
1616
timeout: 30
1717
return_content: false
18-
validate_certs: no
19-
status_code: [200,403]
18+
validate_certs: false
19+
status_code: [200, 403]

ansible/roles/manual-jenkins/molecule/docker-ubuntu/molecule.yml

-4
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,3 @@ provisioner:
6969

7070
verifier:
7171
name: ansible
72-
73-
lint: |
74-
yamllint -c ../../../.yamllint .
75-
ansible-lint .

ansible/roles/manual-jenkins/molecule/docker-ubuntu/verify.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,5 @@
1515
method: GET
1616
timeout: 30
1717
return_content: false
18-
validate_certs: no
19-
status_code: [200,403]
18+
validate_certs: false
19+
status_code: [200, 403]

ansible/roles/manual-jenkins/tasks/debian.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
unarchive:
4141
src: "{{ debian_old_archive }}"
4242
dest: "/usr/lib/jvm"
43-
remote_src: yes
43+
remote_src: true
4444
when: ansible_distribution == 'Debian' and ansible_distribution_major_version | int == 10
4545

4646
- name: Set Java 17 path on Debian family distro (Only Debian 10)

0 commit comments

Comments
 (0)