Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以在剧本中执行ansible剧本吗?_Ansible - Fatal编程技术网

我可以在剧本中执行ansible剧本吗?

我可以在剧本中执行ansible剧本吗?,ansible,Ansible,我正在运行一个playbook来配置我的主节点,然后我想配置只能从主节点访问的节点 如果我试图从主playbook的任务中执行ansible playbook,连接将被拒绝,但是如果我在主程序中使用ssh登录并运行相同的ansible playbook命令,则一切正常 这是主要的ansible剧本,所有任务都会一直执行到最后一个任务 - name: "Copy private key to Workstation" copy: src: ~/.ssh/priv

我正在运行一个playbook来配置我的主节点,然后我想配置只能从主节点访问的节点

如果我试图从主playbook的任务中执行ansible playbook,连接将被拒绝,但是如果我在主程序中使用ssh登录并运行相同的ansible playbook命令,则一切正常

这是主要的ansible剧本,所有任务都会一直执行到最后一个任务

    - 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
在master
ansible 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。