我正在使用 Ansible,并且我的 inventory/all 中有以下配置:
[master]
192.168.1.10 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
[slave]
192.168.1.11 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
192.168.1.12 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
[app]
192.168.1.13 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
[all:children]
master
slave
我不想为每个新实例重复所有参数。我怎样才能在一个地方配置它们?是否有包含这些参数的文件?
答案1
您可以将以下部分添加到您的库存文件中:
[all:vars]
ansible_connection=ssh
ansible_user=vagrant
ansible_ssh_pass=vagrant
笔记:在 Ansible 2.0ansible_user
之前ansible_ssh_user
。
答案2
组变量
您可以使用以下方式设置适用于所有主机的变量剧本布局在 Ansible 中指定最佳实践记录并创建group_vars/all
文件,定义它们。
---
# file: group_vars/all
ansible_connection: ssh
ansible_ssh_user: vagrant
ansible_ssh_pass: vagrant
[编辑] 不过,我对您要做的事情感到困惑。您不需要在清单中指定 Ansible 用户或密码。如果您使用的是 Vagrant,您肯定不需要这样做,如果您从命令行调用 Ansible,您可以指定用户--user=vagrant
并让它使用 询问密码--ask-pass
。
答案3
将以下内容添加到库存主机。
对于 Ansible <2.0:
[all:vars]
ansible_connection=ssh
ansible_ssh_user=vagrant
ansible_ssh_pass=vagrant
为了 Ansible >=2.0:
[all:vars]
ansible_connection=ssh # actually default mode smart is OK
ansible_user=vagrant
ansible_pass=vagrant # or ansible_ssh_pass=vagrant
答案4
免责声明:我只在 OSX 上测试过。根据各种文档,我预计它可以在其他平台上运行。
“项目目录”是指 Vagrant 项目的基础目录 —— 包含的目录Vagrantfile
。
Vagrant 自动生成的 Ansible Inventory 文件:
流浪汉创建库存文件使用默认的 Ansible 连接变量。在 中查找<project directory>/.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory
。
此文件将由 Vagrant 根据需要重新生成,因此手动编辑将被覆盖。但是,根据 Vagrant 文档,您可以指定多台机器、组变量等,Vagrantfile
它们将被添加到此清单文件中。
将 Ansible 配置为默认使用此清单文件:
ansible
为了使此文件成为您在项目目录(在主机上)中时命令使用的默认文件,请ansible.cfg
在项目目录中添加一个包含以下内容的文件,并根据需要更改路径:
[defaults]
inventory = ./path/to/inventory
要确认此库存文件正在被使用,请查找 ansible 报告的默认值:
(来自项目目录内)
$ ansible | grep inventory ERROR! Missing target hosts -i INVENTORY, --inventory-file=INVENTORY specify inventory host path (default=./.vagrant/provis ioners/ansible/inventory/vagrant_ansible_inventory) or
确认您的主机:
$ ansible all --list-hosts hosts (2): master slave
将 Ansible 与这些主机结合使用:
在项目目录中,您应该能够ansible
正常使用您在中定义的主机Vagrantfile
。
例如:
ansible slave -a 'hostname'