– name: Go to the folder command: chdir=/opt/tools/temp 当我运行我的剧本时,我得到: TASK: [Go to the folder] ***************************** failed: [host] => {"failed": true, "rc": 256} msg: no command given 任何帮助深表感谢。
我想知道是否有Ansible访问本地环境variables的方法。 文档引用访问目标机器上的variables: {{ lookup('env', 'SOMEVAR') }} 有没有办法在源机器上访问环境variables?
我试图重新启动服务器,然后等待,使用这个: – name: Restart server shell: reboot – name: Wait for server to restart wait_for: port=22 delay=1 timeout=300 但是我得到这个错误: TASK: [iptables | Wait for server to restart] ********************************* fatal: [example.com] => failed to transfer file to /root/.ansible/tmp/ansible-tmp-1401138291.69-222045017562709/wait_for: sftp> put /tmp/tmpApPR8k /root/.ansible/tmp/ansible-tmp-1401138291.69-222045017562709/wait_for Connected to example.com. Connection closed
你如何使用ansible为特定的python版本创build一个virtualenv。 在标准库中是否有命令? 我想像这样的东西: – virtualenv: dest=venv python_version:/usr/bin/python3
我的用例如下: 我有一个模板文件,我想从该模板创build2个不同的文件,variables由每个文件的一组不同的variables填充。 例如,可以说我想模板包含该行的文件: mkdir -p {{myTemplateVariable}} 我想find一个正确的方法来获得这个variables填充“文件1”和“文件2”。 就像是 : – name: template test 1 template: src=myTemplateFile dest=result1 – name: template test 2 template: src=myTemplateFile dest=result2 我可以在第一个模板中指定要使用的variables是a =“File1”,第二个是b =“File2”。
我想recursion复制一个目录,并将其中的所有.j2文件作为模板呈现。 为此,我正在使用以下几行: – template: > src=/src/conf.d/{{ item }} dest=/dest/conf.d/{{ item|replace('.j2','') }} with_lines: find /src/conf.d/ -type f -printf "%P\n" 现在我正在寻找一种从这个目录中删除非托pipe文件的方法。 例如,如果我从/src/conf.d/删除文件/模板,我希望Ansible将其从/dest/conf.d/删除。 有没有办法做到这一点? 我试着摆弄rsync –delete ,但是在那里我得到了一个模板的问题,它的后缀.j2被删除。
如果没有安装(rpm)软件包,如何让Ansible执行一个shell脚本? 是否有可能利用百胜模块?
背景 我的问题似乎很简单,但它变得非常复杂。 基本上,我真的很厌倦了手动维护我的服务器(尖叫在后台) ,我决定是时候find一种方法,使服务器pipe理员更宜居。 那时候我find了Ansible。 很棒吧? 当然,我打算让自动化的东西制作bash脚本(大声尖叫) 。 有什么问题? 我有很多的麻烦,搞清楚我的个人剧本会运行什么东西。 我也需要能够指定哪些用户将运行特定的任务。 以下是一些具体的用例: 克隆回购作为另一个用户: 我的目的是,它运行我的node.js webapp从另一个用户,我们会叫bill (这只能使用sudo来运行我启动节点服务器的脚本,而不是根或我的用户,可以所有命令都使用sudo)。 要做到这一点,我需要能够让Ansible的git模块克隆我的git回购账单 。 我该怎么做? 了解Ansible将如何获得根源: 据我所知,你可以设置什么用户Ansible将连接到你正在维护的服务器,通过定义“用户”和剧本文件的开始。 下面是我不明白的:如果我通过我的用户名joe告诉它,并通过apt模块更新一个包,它将如何获得root权限? Sudo通常会提示我input密码,我宁愿保持这种状态(为了安全起见)。 最后的要求 我已经search了Ansible文档,做了一些(我认为是彻底的)search,一般只是试图找出自己的,但这些信息继续排除我。 对Ansible来说,我是一个非常新的人物,虽然这很简单,但是如果我能够明确地理解运行的用户,运行的用户以及我可以在不同的时间指定用户的方式,我将会受益匪浅。 提前谢谢你
我已经开发了一个Ansible剧本几个星期,因此,我对这种技术的经验相对较短。 我的战略的一部分包括使用自定义的ansible_ssh_user在整个清单中configuration主机,但是,这样的用户将需要自己的SSH密钥对,这将涉及某种计划来保存/存储其对应的私钥。 在生产环境中,这个剧本将被克隆/拉出,并在某个剧本节点内运行, 剧本的作用是提供其余的基础设施。 起初,我只是想把这个私钥放在playbook git仓库里面,但是我还是有一些想法,主要是因为它有一些明显的安全原因和常识,所以我需要向你咨询一下这件事。 有了这个表,下面是后续问题: 在基于Ansible的开发环境中,在源代码控制中保存私有SSH密钥是否合理? 这种做法是否仅仅是针对开发环境而build议的,然后playbook节点中的另一个本地git分支将被用来保存实际的生产SSH私钥? 用Ansible Vault解决这个案例会更好吗?我以前从未使用过这个方法,但是不pipe如何,我还不能分辨这是否是使用它的适当情况。 根据你的经验,在生产环境中你会采取什么样的方法呢?在这个特定的情况下,最好的做法是什么?
我在Ansible中注册了名为“network”的variables: { "addresses": { "private_ext": [ { "type": "fixed", "addr": "172.16.2.100" } ], "private_man": [ { "type": "fixed", "addr": "172.16.1.100" }, { "type": "floating", "addr": "10.90.80.10" } ] } } 是否有可能得到types=“浮动”的IP地址(“addr”)做这样的事情? – debug: var={{ network.addresses.private_man | filter type="fixed" | get "addr" }} 我知道语法是错误的,但你明白了。