我可以在剧本中执行ansible剧本吗?
我正在运行一个playbook来配置我的主节点,然后我想配置只能从主节点访问的节点 如果我试图从主playbook的任务中执行ansible playbook,连接将被拒绝,但是如果我在主程序中使用ssh登录并运行相同的ansible playbook命令,则一切正常 这是主要的ansible剧本,所有任务都会一直执行到最后一个任务我可以在剧本中执行ansible剧本吗?,ansible,Ansible,我正在运行一个playbook来配置我的主节点,然后我想配置只能从主节点访问的节点 如果我试图从主playbook的任务中执行ansible playbook,连接将被拒绝,但是如果我在主程序中使用ssh登录并运行相同的ansible playbook命令,则一切正常 这是主要的ansible剧本,所有任务都会一直执行到最后一个任务 - name: "Copy private key to Workstation" copy: src: ~/.ssh/priv
- name: "Copy private key to Workstation"
copy:
src: ~/.ssh/private.pem
dest: /home/ubuntu/.ssh/id_rsa
mode: 0400
- name: "Executing playbookNodes on Workstation"
shell: "sudo ansible-playbook -i /home/ubuntu/inventory.yaml playbookNodes.yaml"
tags:
- remote_playbook
如果我运行上述代码,我会得到:
fatal: [workstation]: FAILED! => {
"changed": true,
"cmd": "ssh ubuntu@12.0.11.10",
"delta": "0:00:00.065269",
"end": "2019-07-22 16:05:31.183599",
"invocation": {
"module_args": {
"_raw_params": "ssh ubuntu@12.0.11.10",
"_uses_shell": true,
"argv": null,
"chdir": null,
"creates": null,
"executable": null,
"removes": null,
"stdin": null,
"warn": true
}
},
"msg": "non-zero return code",
"rc": 255,
"start": "2019-07-22 16:05:31.118330",
"stderr": "Warning: Permanently added '12.0.11.10' (ECDSA) to the list of known hosts.\r\nubuntu@12.0.11.10: Permission denied (publickey).",
"stderr_lines": [
"Warning: Permanently added '12.0.11.10' (ECDSA) to the list of known hosts.",
"ubuntu@12.0.11.10: Permission denied (publickey)."
],
"stdout": "",
"stdout_lines": []
}
但是当我运行
ssh-I private.pem时,它就工作了ubuntu@master
在masteransible playbook-i inventory.yaml playbook Nodes.yaml
中,我在AWS的单个playbook中执行了一些非常类似的操作,如下所示,您可以对其进行更改,但您是调配机器:
- name: Provision machine
hosts: localhost
pre_tasks:
- name: Provision ec2 instance
ec2:
// Do AWS ec2 provisioning stuff <snip>
register: new_ec2_instances
- name: Add new instance to host group
add_host:
groupname: newboxes
hostname: "{{ item.private_ip }}"
with_flattened: "{{ new_ec2_instances }}"
- name: wait for ssh
wait_for:
host: "{{ item.private_ip }}"
port: 22
delay: 10
timeout: 180
state: started
with_flattened: "{{ ec2.instances }}"
- name: Do stuff to new boxes
hosts: newboxes
roles:
- yourplaybookNodesyamlhere
-名称:配置计算机
主机:本地主机
学前任务:
-名称:配置ec2实例
ec2:
//做AWS ec2资源调配的事情吗
注册:新的ec2实例
-名称:将新实例添加到主机组
添加\u主机:
群组名称:newboxes
主机名:“{item.private_ip}”
将_展平:“{{new_ec2_instances}”
-name:等待ssh
等待:
主机:{{item.private_ip}}
港口:22
延误:10
超时:180
国家:开始
用_展平:“{ec2.instances}”
-名称:对新的盒子进行填充
主持人:新人
角色:
-你的剧本在这里
我在AWS的一个剧本中做了一些非常类似的事情,如下所示,您可以对其进行更改,无论您是如何配置计算机:
- name: Provision machine
hosts: localhost
pre_tasks:
- name: Provision ec2 instance
ec2:
// Do AWS ec2 provisioning stuff <snip>
register: new_ec2_instances
- name: Add new instance to host group
add_host:
groupname: newboxes
hostname: "{{ item.private_ip }}"
with_flattened: "{{ new_ec2_instances }}"
- name: wait for ssh
wait_for:
host: "{{ item.private_ip }}"
port: 22
delay: 10
timeout: 180
state: started
with_flattened: "{{ ec2.instances }}"
- name: Do stuff to new boxes
hosts: newboxes
roles:
- yourplaybookNodesyamlhere
-名称:配置计算机
主机:本地主机
学前任务:
-名称:配置ec2实例
ec2:
//做AWS ec2资源调配的事情吗
注册:新的ec2实例
-名称:将新实例添加到主机组
添加\u主机:
群组名称:newboxes
主机名:“{item.private_ip}”
将_展平:“{{new_ec2_instances}”
-name:等待ssh
等待:
主机:{{item.private_ip}}
港口:22
延误:10
超时:180
国家:开始
用_展平:“{ec2.instances}”
-名称:对新的盒子进行填充
主持人:新人
角色:
-你的剧本在这里
你应该考虑把你的第一个剧本转换成Python。你应该考虑把你的第一个剧本转换成Python。