Ansible 2.4.2 - 我可以使用带密码的delegate_to吗?

时间:2018-01-23 09:16:43

标签: ansible ansible-2.x

我想从另一台主机上的ansible角色执行任务。我可以使用delegate_to或者我应该使用其他方式吗?

Class Monoid (A:Type) (dot : monoid_binop A) (one : A) : Type := {
  dot_assoc : forall x y z:A, x*(y*z) = x*y*z;
  one_left : forall x, one * x = x;
  one_right : forall x, x * one = x
}.

目标:我想在远程主机上创建用户使用login:password和ssh argument ='-o StrictHostKeyChecking = no'

对于我的库存文件,我使用下一个vars:

- name: Create user on remote host
  user:
    name: "{{ item.1 }}"
    state: present
  delegate_to: "user@{{ item.0.host }}"
  run_once: true
  become: True
  with_subelements:
    - "{{ user_ssh_keys_slave_hosts }}"
    - users
  when: item.1 is defined

2 个答案:

答案 0 :(得分:0)

SSH由~/.ssh/config配置。在那里你可以说哪个认证类型应该是用户。你应该把你的SSH选项放在那里。这定义了与主机的连接应使用不同的用户名:

Host item-0-host
  User user
  StrictHostKeyCecking no
  RSAAuthentication no
  HostName name-of-the-item-0-host

通过这个你有两个主机名。原始主机名,可用于管理主机本身。还有一个新的主机名,可以用来进行用户管理。

我不确定,但我认为,您无法在delegate_to选项的值中指定用户名。

顺便说一下:你知道Ansible的user模块吗?

答案 1 :(得分:0)

Tnx的答案。我解决了我的问题。

ansible_ssh_common_args =' -o StrictHostKeyChecking = no'在库存文件中。

并且

- name: Set authorized key on remote host
  authorized_key:
    user: "{{ item.1 }}"
    state: present
    key: "{{ user_ssh_public_key_fingerprint.stdout }}"
  delegate_to: "{{ item.0.host }}"
  run_once: true
  become: True
  with_subelements:
    - "{{ user_ssh_keys_slave_hosts }}"
    - users
  when: item.1 is defined



user_ssh_keys_slave_group: "{{ groups['slave_hosts']|default([''])}}"
user_ssh_keys_slave_hosts: "{%- set ssh_user = [] %}{%- for host in user_ssh_keys_slave_group %}
                                {{- ssh_user.append(dict(host=host, ssh_user=hostvars[host]['slave_hosts']|default([]))) }}
                                {%- endfor %}
                                {{- ssh_user -}}"