如何运行Glusterfs cli命令;“对等探测”;使用条件为“的Ansible主机组”;什么时候;

如何运行Glusterfs cli命令;“对等探测”;使用条件为“的Ansible主机组”;什么时候;,ansible,glusterfs,Ansible,Glusterfs,我尝试在AWS Centos实例中创建用于创建glusterfs卷副本的ansible角色。我成功创建卷并安装glusterfs。我尝试使用这个建议,在主机组的每台机器上运行“gluster对等探测”。 我有在主机组上运行“glusterfs”角色的剧本: [Server] devserver1.net ansible_user=ec2-user ansible_ssh_private_key_file=/some.pem devserver2.net ansible_user=ec2-user

我尝试在AWS Centos实例中创建用于创建glusterfs卷副本的ansible角色。我成功创建卷并安装glusterfs。我尝试使用这个建议,在主机组的每台机器上运行“gluster对等探测”。 我有在主机组上运行“glusterfs”角色的剧本:

[Server]
devserver1.net ansible_user=ec2-user ansible_ssh_private_key_file=/some.pem
devserver2.net ansible_user=ec2-user ansible_ssh_private_key_file=/some.pem
我现在尝试的是在这个主机组的spesific主机内运行“gluster peer probe…”任务时运行这个角色。就像这样:

- name: gluster peer probe in server1
  shell: gluster peer probe {{ stackName }}server2.net
  when: "'{{ stackName }}server1.net' == {{ inventory_hostname }}"

- name: gluster peer probe in server2
  shell: gluster peer probe {{ stackName }}server1.net
  when: "'{{ stackName }}server2.net' == {{ inventory_hostname }}"
StackName是playbook的预定义库存“dev”变量。
它失败时出错:

失败!=>{“failed”:true,“msg”:“条件检查”{{ 清单_hostname'中的stackName}server1.net失败。该 错误为:计算条件({{stackName)时出错 }}目录中的server1.net(主机名):“server1”是 未定义\n\n该错误似乎已被忽略 “ansible/roles/glusterfs/tasks/main.yml”:第69行第3列,但 根据确切的语法,可能\n出现在文件的其他位置 问题。\n\n出现问题的行是:\n\n\n-名称:gluster 来自服务器1的对等探测\n^此处\n“}


有人建议我怎么做吗?或者我做错了什么?

当Ansible中的条件为时,不应该向中添加Jinja2模板(带表达式)。整个参数应该是一个单独的Jinja2表达式本身:

when: "stackName + 'server1.net' == inventory_hostname"
我们这样做的方式(并且对我们有效)

- name: Form a cluster.
  command: "gluster peer probe {{ peernode }}"
  loop: "{{ ansible_play_hosts | flatten(levels=1) }}"
  loop_control:
    loop_var: peernode
    pause: 2
  register: glusterpeerprobe
  become: true
  run_once: true
  any_errors_fatal: true
  changed_when: "'peer probe: success.' in glusterpeerprobe.stdout_lines"