Ansible 大师我需要你的帮助。我有一个带有变量的模板,我需要在遍历剧本中的列表时动态设置。目前尚不清楚如何将变量“注入”到模板中以在迭代时使用。
目标是在一个目录中创建许多配置文件,列表中的每个 var 一个。例如,如果列表是A, B, C我分别想要文件 A.conf、B.conf、C.conf。
在模板配置文件中,还有一个变量需要分别设置为 A、B 或 C。我尝试使用set_fact列表项和引用中的和设置变量。我试着在里面引用{{ item }}。都失败了?
apps:
- one
- two
- three
tasks:
- name: Install Logstash config
template: src={{ upload_dir }}/deploy/logstash-etl.conf dest=/opt/logstash/bin/etl-{{ item }}.conf
set_fact:
app: "{{ item }}"
delegate_to: "{{ logstash_host }}"
with_items: apps
Run Code Online (Sandbox Code Playgroud)
在模板文件我试着参考{{ app }},并{{ item }}和我似乎无法得到它认识到动态变量从迭代的当前值设置的值。
如果我有应用程序:一、二、三将是文件夹中的 3 个文件,每个文件分别命名为 etl-one.conf、etl-two.conf、etl-three.conf,并且在每个文件中,配置中的变量动态设置为"topic_id": "etl.one.Event" 分别用于 etl-one.conf 和 "topic_id": "etl.two.Event" 分别用于 etl-two.conf。
非常感谢您的任何想法。这set_fact是我最近的尝试,但失败了
ERROR: multiple actions specified in …Run Code Online (Sandbox Code Playgroud) 我有一个shell脚本调用php脚本在解析文本文件后在数据库中插入记录.当它调用PHP脚本时,我得到错误,它无法找到mysqli:
PHP Fatal error: Class 'mysqli' not found in /path/to/php/file.php on line 5
Run Code Online (Sandbox Code Playgroud)
这在使用Nginx和PHP-FPM以及Mysql 5.5.x的Macbook Pro上本地失败,并且在我将套接字参数添加到mysqli调用之后,它在本地工作. 这适用于本地数据库!
$mysqli = new mysqli("localhost", "user", "pass", "mydb", 3306, "/tmp/mysql.sock");
Run Code Online (Sandbox Code Playgroud)
我部署到Linux服务器(CentOS6,安装了带有PHP 5.3.x的'yum install php').我更改了与远程数据库服务器的连接,因此删除了"/tmp/mysql.sock",因为db没有在此服务器上运行.
Shell脚本调用php来执行脚本:
php -c "/etc/php.ini" -f "/path/to/php/file.php"
Run Code Online (Sandbox Code Playgroud)
鉴于我没有在本地运行mysql,我如何让它识别mysqli lib并执行.它在CentOS6上.我甚至尝试将mysqli.so添加到php.ini文件并出现以下错误:
[mike@app2 myapp]# php -version
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/mysqli.so' - /usr/lib64/php/modules/mysqli.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP 5.3.3 (cli) (built: Feb 2 2012 23:47:49)
Copyright (c) 1997-2010 …Run Code Online (Sandbox Code Playgroud)