为用户建立 SSH 连接:在命令行上指定单个主机时无

Wu *_*Fei 5 ansible

在命令行上指定单个主机时如何设置 ssh 或 ansible_user ?

当我指定单个主机时,如下所示:

$ansible-playbook -i "ceph1," jdk.yml
TASK [hadoop : create hadoop group] ********************************************
task path: /playbooks/yarn/roles/hadoop/tasks/install.yml:2
<ceph1> ESTABLISH SSH CONNECTION FOR USER: None
Run Code Online (Sandbox Code Playgroud)

ssh 连接用户和 {{ansible_user}} 都没有,但我已经在 ssh/config 中定义了它

$cat jdk.yml
- hosts: all
  vars_files:
     - default.yml
  roles:
     - role: jdk

$cat role/jdk/tasks/main.yml

- name: set java home
  lineinfile: dest=/home/{{ ansible_ssh_user }}/.bashrc
              line={{ item }}
  with_items:
    - export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

$cat hosts
    ceph1 ansible_user=ubuntu

$cat ~/.ssh/config
    Host ceph1
    User ubuntu
Run Code Online (Sandbox Code Playgroud)

当然运行下面的就可以了

$ansible-playbook  jdk.yml
Run Code Online (Sandbox Code Playgroud)

小智 3

您可以传递 -e 参数:

# ansible -m ping web1 -i inventory/a2  -vvv -e "ansible_user=ceph"
<a2-web1> ESTABLISH SSH CONNECTION FOR USER: ceph
Run Code Online (Sandbox Code Playgroud)