当前位置:首页 » 网页前端 » 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的原因是退出太快可能脚本没跑起来就退出了。