當前位置:首頁 » 網頁前端 » ansible腳本怎麼寫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

ansible腳本怎麼寫

發布時間: 2023-07-08 18:32:18

❶ 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的原因是退出太快可能腳本沒跑起來就退出了。