我正在开发一个ansible角色来自动安装vertica。该角色在3节点群集上运行。我被困在2个地方。
- 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为您提供groups
变量。这是一个字典,其键是组名,值是每个组中的主机列表。因此,例如,如果您有一个名为vertica_servers
的组,您可以编写如下内容:
- name: Install vertica
command: /opt/vertica/sbin/install_vertica --hosts ','.join(groups.vertica_servers) ...
我想要ansible使用我传递的pem键来安装vertica。密钥应存放在哪里?
听起来你有一个ssh私钥,install_vertica
命令将使用它来访问集群中的主机。您需要首先在运行install_vertica
命令的远程主机上提供该私钥。你可以用copy
任务做到这一点:
- name: install private key
copy:
src: "{{ private_key_file }}"
dest: "/root/.ssh/vertica_key.pem"
mode: "0400"
owner: root
group: root
然后将该路径传递给您的install_vertica
命令:
- name: Install vertica
command: /opt/vertica/sbin/install_vertica --hosts ','.join(groups.vertica_servers) --ssh-identity /root/.ssh/vertica_key.pem
这假设您已将private_key_file
设置为本地系统上密钥的路径。