如何在没有hosts文件的情况下运行Ansible

时间:2016-06-06 08:11:03

标签: shell ansible

如何在没有主机文件的情况下运行Ansible

就像:

#ansible --"Some Options" IP -a 'uptime'

感谢

4 个答案:

答案 0 :(得分:16)

你可以这样做:

ansible all -i "<hostname-or-ip>," -a 'uptime'

请注意IP地址末尾的,,否则它将被视为主机广告资源文件名。

以下是一个参考示例:

ansible all -i "192.168.33.100," -a 'uptime'

192.168.33.100 | SUCCESS | rc=0 >>
 12:05:10 up 10 min,  1 user,  load average: 0.46, 0.23, 0.08

答案 1 :(得分:5)

可以使用三种方式向主机提供主机

  • 在ansible.cfg中使用库存路径,默认情况下为/ etc / ansible / host

  • 使用主机文件

    ansible -i /tmp/hosts -a 'uptime'
    
  • 使用hosts ip作为逗号分隔的主机列表。 请注意列表末尾的逗号

    ansible -i "192.168.1.16,192.168.1.80:2222," -a 'uptime'   
    

ansible --help,您可以获得-i选项说明

-i INVENTORY, --inventory-file=INVENTORY
                    specify inventory host path
                    (default=/etc/ansible/hosts) or comma separated host
                    list.

答案 2 :(得分:0)

如果你想一次运行playbook或更多而不是整个列表,你可以尝试使用-l | --limit&#34; your.node.local&#34;

ansible-playbook -i inventory.hosts --limit your.node.local user.yml

答案 3 :(得分:0)

这两个答案都满足了您的大部分需求,但要SSH到远程主机,您需要告诉ansible哪个用户使用SSH,特别是如果您正在运行的系统上的{ 1}}和远程目标。

例如,我有4个带有Ubuntu 20.04的RPi4系统。要使用Ansiible ad-hoc命令访问它们,请执行以下操作:

ansible

在这里,我向-$ ansible -i "k8s-02a,k8s-02b,k8s-02c,pi-vpn," -a uptime all -u ubuntu pi-vpn | CHANGED | rc=0 >> 12:47:26 up 7:52, 1 user, load average: 0.14, 0.14, 0.10 k8s-02c | CHANGED | rc=0 >> 12:47:27 up 7:58, 1 user, load average: 0.06, 0.10, 0.09 k8s-02a | CHANGED | rc=0 >> 12:47:27 up 7:58, 1 user, load average: 0.43, 0.50, 0.47 k8s-02b | CHANGED | rc=0 >> 12:47:27 up 7:58, 1 user, load average: 0.08, 0.06, 0.04 提供了我的主机名列表,还指示i使用用户名ansible

注意:我的ubuntu版本:

ansible
$ ansible --version | grep ^ans
ansible 2.9.11