❶ ansible-playbook根據文件名分發腳本
創建用戶,設置wheel組sudo不需要密碼,然後將用戶添加到wheel組,並將用戶的公鑰傳輸到節點上:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
---
- name: Linux Create User and Upload User Public keys
hosts: test
#remote_user: xxxx
#sudo: yes
vars:
user_1: xiaoxiaoleo
tasks:
- name: Make sure we have a 'wheel' group
group:
name: wheel
state: present
- name: Allow 'wheel' group to have passwordless sudo
lineinfile:
dest: /etc/sudoers
state: present
regexp: '^%wheel'
line: '%wheel ALL=(ALL) NOPASSWD: ALL'
- name: Create user {{ user_1 }}
user:
name: "{{ user_1 }}"
shell: /bin/bash
groups: wheel
createhome: yes
home: /home/{{ user_1 }}
state: present
- name: create key directory
action: file path=/home/{{ user_1 }}/.ssh/ state=directory owner={{ user_1 }} group={{ user_1 }} mode=0700
- name: create key file
action: file path=/home/{{ user_1 }}/.ssh/authorized_keys state=touch owner={{ user_1 }} group={{ user_1 }} mode=0600
- name: Set authorized key took from file
authorized_key:
user: "{{ user_1 }}"
state: present
❷ ansible使用
Ansible使用
/etc/ansible/ansible.cfg 主配置文件 ansible的配置文件
/etc/ansible/hosts Inventory 要遠程式控制制的主機列表
/usr/bin/ansible-doc 幫助文件
/usr/bin/ansible-playbook 指定運行任務文件
默認: /etc/ansible/hosts
inventory file可以有多個,且也可以通過Dynamic Inventory來動態生成。
參考解釋例子ansible_ssh_host將要連接的改蔽遠程主機名.與你想要設定的主機的別名不同的話,可通過此變數設置.ansible_ssh_host=192.169.1.123ansible_ssh_portssh埠號.如果不是默認的埠號,通過此變數設置.ansible_ssh_port=5000ansible_ssh_user默認的 ssh 用戶名ansible_ssh_user=cxpadminansible_ssh_passssh 密碼(這種方式並不安全,我們強烈建議使用 --ask-pass 或 SSH 密鑰)ansible_ssh_pass=』123456』
ansible2.0,ansible_ssh_user, ansible_ssh_host, ansible_ssh_port已經改變為ansible_user, ansible_host, ansible_port。具體參考官網
http://docs.ansible.com/ansible/latest/intro_inventory.html
常見的模塊及使用參考: ansible基核沖州本使用教程 - 陳小跑 - 博客園
命令行方式一次只能執行單條命令,如果命令量較多,可以使用playbook的方式。 https://segmentfault.com/a/1190000038230424
playbook使用yaml格式編寫。組成結構如下:
舉例如下:
使用參考: https://segmentfault.com/a/1190000038230424
"msg": "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this host's fingerprint to your known_hosts file to manage this host."
通常情況下,通過&指定的後台任務在終端退出後會自動退出執行。一般來說,加上nohup即可在後台一直執行。但在使用ansible時,發現 ansible all -m shell -a 'nohup cmd &' 命令無法在後台一直執行。後來想了個辦法,將命判高令寫入腳本,然後通過執行腳本來實現。
腳本內容為
ansible命令為 ansible all -m script -a 'bash xxx.sh' 。sleep的原因是退出太快可能腳本沒跑起來就退出了。