建議參考:
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 id_rsa id_rsa.pub known_hosts
如果沒有的話,執行: ssh-keygen,然后一路回車即可(前提是在 test用戶下操作)
2. 准備 ansible執行所需要的 hosts文件,文件內容主要是 [test] 組標記, ips 要遠程操作的服務器ip 每個ip是一行,ip后面跟上 指定的 ssh信息:ansible_ssh_user=test ansible_ssh_pass=test ansible_ssh_port=22
test 文件內容如下:
[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來去自如
