zjxhx 发表于 2018-1-2 22:16:35

ansible-playbook 打通ssh无秘钥

  建议参考:
  http://www.cnblogs.com/jackchen001/p/6514018.html
  这个代码清晰,效果佳!
  参考链接:
  http://www.cnblogs.com/caoguo/p/5351127.html
  备注下,其实 不需要执行 rsync_key2.yml
  执行ansible前会遇到 ssh首次连接时,提示 是否continue,需要输入yes,这个问题,得需要个解决办法
  1. 首先确认要远程打通ssh无秘钥的用户,是否有生成相应的key
  比如 test用户,ls /home/test/.ssh/
  是否有这些文件

  authorized_keys >  如果没有的话,执行: ssh-keygen,然后一路回车即可(前提是在 test用户下操作)
  2. 准备 ansible执行所需要的 hosts文件,文件内容主要是 组标记, ips 要远程操作的服务器ip 每个ip是一行,ip后面跟上 指定的 ssh信息:ansible_ssh_user=test ansible_ssh_pass=test ansible_ssh_port=22
  test 文件内容如下:

  0.0.0.1 ansible_ssh_user=test ansible_ssh_pass=test ansible_ssh_port=22
  0.0.0.2 ansible_ssh_user=test ansible_ssh_pass=test ansible_ssh_port=22
  3. 准备playbook文件 ,yml结尾
  3.1. 拷贝ssh :
  rsync_key.yml
  文件内容如下:
  - hosts: test
  remote_user: test
  tasks:
  - name: copy ssh key
  authorized_key:
  user: test
  key: "{{ lookup('file', '/home/test/.ssh/id_rsa.pub') }}"
  3.2.传送key到远程服务器:
  rsync_key2.yml
  文件内容如下:
  - hosts: test
  remote_user: test
  tasks:
  - name: mkdir /home/test/.ssh
  command: mdkir -p /home/test/.ssh
  - name: copy ssh key
  copy: src=/home/test/.ssh/id_rsa.pub dest=/home/test/.ssh owner=test group=test mode=0644
  3.3. 执行 playbook
  -i test ,是指指定 ansible playbook 需要执行远程服务器, test 相对于 默认的hosts文件
  ansible-playbook-i test rsync_key.yml
  ansible-playbook-i test rsync_key2.yml (不需要执行了,第一个足矣)
  添加 hadoop用户
  useradd.yml
  ---
  - hosts: hadoop_devops_hosts
  remote_user: test
  sudo: yes
  vars:
  user: hadoop
  tasks:
  - name: add user
  action: user name={{ user }}home=/home/{{ user }}
  tags:
  - user
  执行完后,查看下
  ansible -i ./hosts hadoop_hosts -m shell -a "id hadoop"
  接下来准备 远程生成hadoop key
  并在 各服务器上,让 hadoop来去自如
页: [1]
查看完整版本: ansible-playbook 打通ssh无秘钥