如何在ansible中传递组主机?

如何在ansible中传递组主机?,ansible,vertica,ansible-2.x,Ansible,Vertica,Ansible 2.x,我正在担任一个ansible的角色,以自动安装vertica。角色正在3节点群集上运行。我被困在两个地方 我正在尝试运行下面的命令,我想通过我的组资源清册中的主机,我已经通过了一次run_,它将只在第一台主机上运行(这是我想要的),但是如何通过所有3台主机,比如--hosts xx.xxx.xx.xx,xx.xxx.xx,xx.xxx.xx.xx我如何实现这一点 我希望ansible使用我通过的pem键安装vertica。钥匙应该存放在哪里 - name: Install vertica c

我正在担任一个ansible的角色,以自动安装vertica。角色正在3节点群集上运行。我被困在两个地方

  • 我正在尝试运行下面的命令,我想通过我的组资源清册中的主机,我已经通过了一次run_,它将只在第一台主机上运行(这是我想要的),但是如何通过所有3台主机,比如--hosts xx.xxx.xx.xx,xx.xxx.xx,xx.xxx.xx.xx我如何实现这一点

  • 我希望ansible使用我通过的pem键安装vertica。钥匙应该存放在哪里

    - name: Install vertica
      command: /opt/vertica/sbin/install_vertica --hosts x.xx.xx.xx,xx.xxx.xx.xx,xx.xxx.xx.xx --rpm /opt/vertica-{{ vertica_version }}.x86_64.RHEL6.rpm --dba-user-password-disabled --point-to-point --data-dir /vertica/data --ssh-identity x.pem
      when: vertica_already_installed|failed
      run_once: True
      become: yes
    
  • 寻找建议

    提前谢谢

    我正在尝试运行下面的命令,我想从我的组资源清册中传递主机

    Ansible为您提供了
    变量。这是一个字典,其键是组名,值是每个组中主机的列表。例如,如果您有一个名为vertica_servers的组,您可以编写如下内容:

    - name: Install vertica
        command: /opt/vertica/sbin/install_vertica --hosts ','.join(groups.vertica_servers) ...
    
    我希望ansible使用我通过的pem键安装vertica。钥匙应该存放在哪里

    听起来您有一个ssh私钥,这将被
    install\u vertica
    命令用来访问集群中的主机。首先,您需要在运行
    install\u vertica
    命令的远程主机上提供该私钥。您可以通过
    复制
    任务来完成:

    - name: install private key
      copy:
        src: "{{ private_key_file }}"
        dest: "/root/.ssh/vertica_key.pem"
        mode: "0400"
        owner: root
        group: root
    
    然后将该路径传递给您的
    install\u vertica
    命令:

    - name: Install vertica
        command: /opt/vertica/sbin/install_vertica --hosts ','.join(groups.vertica_servers) --ssh-identity /root/.ssh/vertica_key.pem
    

    这假设您已将
    private\u key\u file
    设置为本地系统上的密钥路径。

    对不起,让我用另一种方式来阐述我的问题,上面的命令使用密钥登录集群中的其他节点以安装vertica。所以我想知道如何在ansible中使用pem键来实现这一点?如果我手动运行,我会给出存储在host1中的密钥的路径。基本上,它是从host1运行上面的命令,但是从host1使用pem密钥,它需要连接到其他2台主机并安装Vertica,在运行ansible之前,密钥现在存储在哪里?当地有吗?它已经安装在远程主机上了吗?我正在从我的开发机器上运行ansible命令,并使用id_rsa密钥将其登录到服务器。我已经在~/.ssh/authorized_key中的所有3个节点中复制了id_rsa.pub。是的,我在~/.ssh/x.pem中本地拥有密钥