如何使用Ansible来生成/etc/profile或/etc/bash.bashrc文件
我正在尝试使用Ansible源代码/etc/profile或/etc/bash.bashrc,但不断收到错误消息如何使用Ansible来生成/etc/profile或/etc/bash.bashrc文件,bash,shell,ansible,Bash,Shell,Ansible,我正在尝试使用Ansible源代码/etc/profile或/etc/bash.bashrc,但不断收到错误消息 TASK [Source Profile] ********************************************************************* fatal: [localhost]: FAILED! => {"changed": false, "cmd": "source /etc/profile", _ "failed":
TASK [Source Profile]
*********************************************************************
fatal: [localhost]: FAILED! => {"changed": false, "cmd": "source /etc/profile", _
"failed": true, "msg": "[Errno 2] No such file or directory", "rc": 2}
我的代码是
- name: Source Profile
shell: source /etc/bash.bashrc
args:
executable: /bin/bash
我尝试了很多其他的东西
例如命令:source/etc/bash.bashrc
(也尝试了/etc/profile
而不是/etc/bash.bashrc
)
我如何获取资源或应用此资源的最佳方式是什么
感谢您再次检查您试图获取的文件是否存在,错误消息“没有这样的文件或目录”告诉您文件不存在,例如,这在本地有效:
# ansible-playbook -i "localhost," -c local test.yml
---
- hosts: localhost
tasks:
- name: test source profile
shell: source /etc/bashrc
register: output
args:
executable: /bin/bash
- debug: msg="{{ output }}"
在本例中,正在尝试源代码/etc/bashrc
另外,请注意寄存器:output
和:
- debug: msg="{{ output }}"
这将把命令的输出注册到一个名为output
的变量中,并打印它的内容,试一试,它可以让您对错误有更多的了解
它将输出如下内容:
$ ansible-playbook -i "localhost," -c local test.yml
PLAY [localhost] ***************************************************************
TASK [setup] *******************************************************************
ok: [localhost]
TASK [test source profile] *****************************************************
changed: [localhost]
TASK [debug] *******************************************************************
ok: [localhost] => {
"msg": {
"changed": true,
"cmd": "source /etc/bashrc",
"delta": "0:00:00.004553",
"end": "2017-09-22 21:15:24.654777",
"rc": 0,
"start": "2017-09-22 21:15:24.650224",
"stderr": "",
"stdout": "",
"stdout_lines": [],
"warnings": []
}
}
PLAY RECAP *********************************************************************
localhost : ok=2 changed=1 unreachable=0 failed=0
文件肯定在那里。所有Ubuntu至少应该有/etc/profile和/或/etc/bash.bashrc。此外,当我在本地运行该命令时,它也可以正常工作。仔细检查,可能您在本地运行该命令,但不在远程系统中,并非毫无原因,您会从我测试过的ansible“No-some file or directory”中得到错误,并且它肯定在@nbari中。我通过尝试编辑文件进行了测试。它能够添加一行。由于某些原因,它只是不可用。@automatable我更新了答案,以便您了解如何调试命令的输出,试一试应该会给您一些提示。我对Ansible不太熟悉,无法提出解决方案,但问题是您正在尝试执行一个名为两个单词的程序“source/etc/profile”。我必须同意[用户:chepner]关于shell命令。通过简单的文档查找,
shell
命令应该是要自己运行的可执行文件,就像“shell:source”一样,然后使用args作为任何空格分隔的参数来传递。快速Google Groups search得出了这样的结论:或者您可以删除args
可选命令,并放置完整的string在shell
中。例如shell:source/etc/bash.bashrc
其他替代方法是将command:source/home/ubuntu/.bash\u profile executable=/bin/bash
作为一行程序,而不是shell
,但您知道这项任务基本上没有意义吗?源代码值将在这段时间后立即丢失问结局。