我试图在Ansible上执行我的第一个远程shell脚本。我首先生成并复制了SSH密钥。这是我的yml文件:
---
- name: Ansible remote shell
hosts: 192.168.10.1
user: myuser1
become: true
become_user: jboss
tasks:
- name: Hello server
shell: /home/jboss/script.sh
然而,当启动剧本时,结果是"没有主机匹配":
ansible-playbook setup.yml
PLAY [Ansible remote shell
********************************************
skipping: no hosts matched
PLAY RECAP ********************************************************************
我还试过使用主机名(而不是IP地址),但没有改变。有什么帮助吗?
答案 0 :(得分:27)
您需要定义主机库存。
此默认路径为def xor(x, y):
ans = ""
for i in xrange(len(x)):
if x[i] == "0" and y[i] == "1" or x[i] == "1" and y[i] == "0":
ans += "1"
else:
ans += "0"
return ans
(同样由helloV声明)。
对于最小示例,您还可以在命令行中指定库存:
/etc/ansible/hosts
尾随逗号使其成为一个列表,以便ansible直接解析它。否则你可以运行
ansible-playbook setup.yml -i 192.168.10.1,
其中ansible-playbook setup.yml -i myinventory
是列出您的主机的文件。
答案 1 :(得分:8)
Ansible对您的主人一无所知。如果它位于动态广告资源中,您可以使用-i选项传递广告资源脚本或修改/etc/ansible/hosts
并为您的主机添加条目,如:
[myhost]
192.168.10.1
并将剧本中的主机指定为:
hosts: myhost
答案 2 :(得分:0)
我们必须在ansible中创建一个Inventory文件,我们需要为
提供IP地址文件的位置
按名称创建文件 /ip.txt
并在您的清单中提供上面创建的文件的路径