Я начинаю изучать ANSI и пытаюсь установить расширения PHP и PHP.
У меня есть файл, в котором я объявляю свои версии php и расширения php, и он выглядит так:
php:
versions:
- 7.2:
- cli
- fpm
- curl
- mysql
- pdo
- zip
- xml
- gd
- mbstring
- tokenizer
- ctype
- json
- 7.3:
- cli
- fpm
- curl
- mysql
- pdo
- zip
- xml
- gd
- mbstring
- tokenizer
- ctype
- json
Я делаю это, потому что я хочу изучать ANSIBLE, а также для гибкости и установки различных расширений для каждой версии PHP.
Я пытаюсь отладить свой код с помощью этого (это находится в разделе задач в моем файле playbook.yml)
- name: DEBUG ANSIBLE PLAYBOOK
debug:
msg: The key is - {{ item.keys() | first }} The item is "{{ item[item.keys() | first] }}"
loop: "{{ php.versions }}"
loop_control:
loop_var: item
Я получаю этот вывод:
TASK [DEBUG ANSIBLE PLAYBOOK]
ok: [127.0.0.1] => (item={7.2: [u'cli', u'fpm', u'curl', u'mysql', u'pdo', u'zip', u'xml', u'gd', u'mbstring', u'tokenizer', u'ctype', u'json']}) => {
"msg": "The key is - 7.2 The item is \"[u'cli', u'fpm', u'curl', u'mysql', u'pdo', u'zip', u'xml', u'gd', u'mbstring', u'tokenizer', u'ctype', u'json']\""
}
ok: [127.0.0.1] => (item={7.3: [u'cli', u'fpm', u'curl', u'mysql', u'pdo', u'zip', u'xml', u'gd', u'mbstring', u'tokenizer', u'ctype', u'json']}) => {
"msg": "The key is - 7.3 The item is \"[u'cli', u'fpm', u'curl', u'mysql', u'pdo', u'zip', u'xml', u'gd', u'mbstring', u'tokenizer', u'ctype', u'json']\""
}
И я пытаюсь установить PHP, используя эту задачу:
- name: Install PHP
package:
pkg: php{{ item.keys() | first }}-{{ item[item.keys() | first] }}
state: latest
loop: "{{ php.versions }}"
loop_control:
loop_var: item
notify: Restart Nginx
Но не работает, потому что item[item.keys() | first]
- это массив, и я не знаю, как сделать цикл снова, чтобы получить cli, fpt вместо массива.
Я изучаю ANSIBLE с 3-х дней, и я действительно не понимаю, как можно зацикливаться больше раз. Я ищу в Интернете, читаю документацию, но не понимаю
https://docs.ansible.com/ansible/2.4/playbooks_loops.html
Если кто-то может объяснить, я буду очень признателен!