ansible 快速开始

1.前置条件

准备至少三台虚拟机,我的环境如下:

OS IP hostname
Fedora Linux 39 (Server Edition) 10.1.1.130 fd-master
Fedora Linux 39 (Server Edition) 10.1.1.131 fd-node1
Fedora Linux 39 (Server Edition) 10.1.1.132 fd-node2

2.基本配置

fd-master 安装ansible,并配置 fd-node1fd-node2 的ssh免密登录。

1
2
3
4
[root@fd-master:~]# dnf install -y ansible
[root@fd-master:~]# ssh-keygen -t ed25519 -C "<your_email>"
[root@fd-master:~]# ssh-copy-id -i /root/.ssh/id_ed25519.pub root@10.1.1.131
[root@fd-master:~]# ssh-copy-id -i /root/.ssh/id_ed25519.pub root@10.1.1.132

编辑 fd-masterhosts 文件,添加 fd-node1fd-node2 的IP地址。

1
2
3
4
[root@fd-master:~]# vim /etc/hosts
10.1.1.130 ansible
10.1.1.131 node1
10.1.1.132 node2

3.ansible 相关配置

fd-node1fd-node2 两个主机添加进 fd-master 的主机列表里,两主机同属ws组。

1
2
3
[root@fd-master:~]# vim /etc/ansible/hosts
[ws]
node[1:2]

4.测试连接

测试 fd-node1 连通性

测试 ws 组连通性

5.示例用法

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
42
43
# 从 fd-master 拷贝文件到 ws 组中的所有机器,并设置权限,开启备份(即不覆盖原文件)
[root@fd-master:~]# ansible ws -m copy -a 'src=/path/to/source dest=/path/to/destination owner=<user_name> group=<group_name> mode=777 backup=yes'

# ws 组中的所有机器创建用户(lilin)
[root@fd-master:~]# ansible ws -m user -a 'name=lilin state=present'

# ws 组中的所有机器为用户(lilin)设置密码
[root@fd-master:~]# echo "password" | openssl passwd -1 -stdin
$1$nvX4skcy$EoJIwBB6WOf9keRecRJtq.
[root@fd-master:~]# ansible ws -m user -a 'name=lilin password="$1$nvX4skcy$EoJIwBB6WOf9keRecRJtq."'

# ws 组中的所有机器为用户(lilin)设置登录 shell (nologin意为禁止登录)
[root@fd-master:~]# ansible ws -m user -a 'name=lilin shell=/sbin/nologin append=yes'

# ws 组中的所有机器删除用户(lilin)
[root@fd-master:~]# ansible ws -m user -a 'name=lilin state=absent'

# ws 组中的所有机器更新系统
[root@fd-master:~]# ansible ws -m dnf -a 'name="*" state=latest'

# ws 组中的所有机器安装 nginx
[root@fd-master:~]# ansible ws -m dnf -a 'name="nginx" state=latest'

# ws 组中的所有机器卸载 nginx
[root@fd-master:~]# ansible ws -m dnf -a 'name="nginx" state=absent'

# ws 组中的所有机器开启 nginx 服务并设置开机自启
[root@fd-master:~]# ansible ws -m service -a 'name=nginx state=started enabled=yes'

# ws 组中的所有机器创建文件
[root@fd-master:~]# ansible ws -m file -a 'path=/path/to/file mode=777 state=touch'

# ws 组中的所有机器创建文件夹
[root@fd-master:~]# ansible ws -m file -a 'path=/path/to/directory mode=777 state=directory'

# node1 主机信息收集
[root@fd-master:~]# ansible node1 -m setup

# node1 主机 ipv4 地址信息
[root@fd-master:~]# ansible node1 -m setup -a 'filter=ansible_all_ipv4_addresses'

# 获取 ws 组中的所有机器的 hostname 信息(通过 shell 模块)
[root@fd-master:~]# ansible ws -m shell -a 'hostname' -o

ansible 快速开始
https://lilinzta.github.io/2024/04/13/ansible-快速开始/
作者
Haotian Li
发布于
2024年4月13日
许可协议