我实际上是新手。我相信我正在使用一个ansible ie,/usr/bin/ansible
的Ubuntu主机来配置流浪客人,但是,我可以在哪里更改我的剧本,以便我可以控制除了流浪客人之外的主机上的一些东西?
答案 0 :(得分:1)
要在本地主机上运行命令,基本上有两种选择:
local_action
一样使用:
- name: take out of load balancer pool
local_action: command /usr/bin/some_command
- name: Execute some local commands
hosts: localhost
tasks:
- local_action: command /usr/bin/some_command
- local_action: command /usr/bin/some_command
有关更多信息,请参阅非常广泛的docmentation
答案 1 :(得分:0)
在您的Vagrantfile中,您可以将配置定义为:
config.vm.provision "ansible" do |ansible|
ansible.playbook = "myPlaybook.yml"
在这种情况下,Vagrant会自动在.vagrant / provisioners / ansible / inventory / vagrant_ansible_inventory中创建一个Ansible库存文件 看起来像是:
# Generated by Vagrant
default ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222
所以playbook运行到localhost通过ssh连接到端口2222而不是localhost连接
---
- hosts: localhost
connection: local
如果我完全理解您的问题,您需要在Vagrant提供的主机和Vagrant主机(localhost)上运行相同的Playbook。
所以我认为您可以为使用Ansible配置的Vagrant提供的主机分配一个ip,并使用您提供给Vagrant的静态库存文件,因此您的Vagrantfile将包含类似
的内容config.vm.network "private_network", ip: "192.168.33.10"
...
config.vm.provision "ansible" do |ansible|
ansible.playbook = "myPlaybook.yml"
ansible.inventory_path = "./myInventory"
和./myInventory
myHost1 ansible_ssh_host=192.168.33.10 ansible_ssh_port=22
然后你应该能够区分vagrant提供的主机(因为它是一个远程主机)与localhost。然后你将安排你的playbook有不同的目标(myHost1和localhost),它应该正确处理local_action。
在您的清单中,您可以在任何ansible清单文件中定义组,并且您可以告诉Vagrantfile处理提供的ansible.groups
config.vm.provision "ansible" do |ansible|
ansible.playbook = "myPlaybook.yml"
ansible.inventory_path = "./myInventory"
ansible.groups = {
"group1" => ["myGroup"]