使用 ansible 安装多个 php 模块
Installing multiple php modules with ansible
我正在尝试使用 ansible
安装多个 php 模块
这里是任务的例子:
- name: debug php modules
debug: msg="{{ php_version }}-{{ item }}"
with_items: php_modules
- name: php modules/extensions are installed
yum:
state=present
name="{{ php_version }}-{{ item }}"
with_items: "{{ php_modules }}"
when: php_modules is defined
和定义的实际变量:
vars:
php_version: php56u
php_modules:
- intl
- pdo
剧本失败 "No Package matching 'pdo' found available, installed or updated"
我试过 with_items: php_modules
但无法正常工作。这很奇怪,因为上面的调试每次都有效:
ok: [server-1] => (item=intl) => {
"item": "intl",
"msg": "php56u-intl"
}
ok: [server-1] => (item=pdo) => {
"item": "pdo",
"msg": "php56u-pdo"
}
一个奇怪的问题。我可能在这里遗漏了一些非常简单的东西?
感谢@udondan 提供有关调试 yum 模块输出的提示。这很有帮助!结果是 ansible yum 模块尝试一次安装所有东西,因此列表变成了 "php56u-intl,pdo"
而不是 "php56u-intl,php56u-pdo"
(因此 "debug" 模块对待它的方式不同,debug 运行s 对每个项目多次,但 yum 将它们放在一起)。
bug/feature/limitation 实际上是在这里报告的:https://github.com/ansible/ansible/issues/5871
诀窍,因为问题列表中的评论之一是使用 "join",这会强制 yum 模块分别 运行 每个项目:
- name: php modules/extensions are installed
yum:
state=present
name={{ item|join('-') }}
with_nested:
- php_version
- php_modules
when: php_modules is defined
在 ansible yum 模块添加选项之前,这可能是唯一的方法 "one_by_one_install_please_please_please: true/false"
我正在尝试使用 ansible
安装多个 php 模块这里是任务的例子:
- name: debug php modules
debug: msg="{{ php_version }}-{{ item }}"
with_items: php_modules
- name: php modules/extensions are installed
yum:
state=present
name="{{ php_version }}-{{ item }}"
with_items: "{{ php_modules }}"
when: php_modules is defined
和定义的实际变量:
vars:
php_version: php56u
php_modules:
- intl
- pdo
剧本失败 "No Package matching 'pdo' found available, installed or updated"
我试过 with_items: php_modules
但无法正常工作。这很奇怪,因为上面的调试每次都有效:
ok: [server-1] => (item=intl) => {
"item": "intl",
"msg": "php56u-intl"
}
ok: [server-1] => (item=pdo) => {
"item": "pdo",
"msg": "php56u-pdo"
}
一个奇怪的问题。我可能在这里遗漏了一些非常简单的东西?
感谢@udondan 提供有关调试 yum 模块输出的提示。这很有帮助!结果是 ansible yum 模块尝试一次安装所有东西,因此列表变成了 "php56u-intl,pdo"
而不是 "php56u-intl,php56u-pdo"
(因此 "debug" 模块对待它的方式不同,debug 运行s 对每个项目多次,但 yum 将它们放在一起)。
bug/feature/limitation 实际上是在这里报告的:https://github.com/ansible/ansible/issues/5871
诀窍,因为问题列表中的评论之一是使用 "join",这会强制 yum 模块分别 运行 每个项目:
- name: php modules/extensions are installed
yum:
state=present
name={{ item|join('-') }}
with_nested:
- php_version
- php_modules
when: php_modules is defined
在 ansible yum 模块添加选项之前,这可能是唯一的方法 "one_by_one_install_please_please_please: true/false"