安装ansible
apt install ansible -y
ansible 标准化操作系统
ansible-doc -l |wc 模块
ansible-doc -l |grep nginx
查看帮助文档
ansible-doc mysql_db
[root@rocky8 ~]# ansible-console 交互命令
-b 通过sudo执行
普通用户提权
被控制端创建luo用户设置密码,并提权
useradd -s /bin/bash luo
vi /etc/sudors
luo ALL=(ALL) NOPASSWD: ALL
控端生成密钥拷贝到被监控端
[luo@rocky8 ~]$ ssh-keygen -f ~/.ssh/id_rsa -P ‘’
[luo@rocky8 ~]$ ssh-copy-id luo@192.168.1.50
[luo@rocky8 ~]$ ssh-copy-id luo@192.168.1.51
使用普通用户通过-b选项连接实现sudo提权后连接成功
[luo@rocky8 ~]$ ansible 192.168.1.51 -m shell -a 'ls /root' -b --become-user root
192.168.1.51 | CHANGED | rc=0 >>
1.sh
anaconda-ks.cfg
b.txt
cri-dockerd
cri-dockerd-0.3.1-3.el7.x86_64.rpm
go
go1.16.10.linux-amd64.tar.gz
mha4mysql-manager-0.58-0.el7.centos.noarch.rpm
常用模块
file 模块
path #在被控端创建的路径
owner #属主
group #属组
mode #权限
state #状态
=touch #创建文件
=directory #创建目录
=link #软链接
=hard #硬链接
recurse #yes表示递归授权
ansible all -m file -a ‘path=/etc/1.txt state=touch mode=400’
fetch
playbook
不能有tab键
---
- hosts: websrvs
tasks:
- name: 查看passwd
command: "cat /etc/passwd"
- name: "输出Hello"
shell: "echo hello"
安装nginx
[root@ubuntu20.04.3.example.com ansible]$ cat nginx.yaml
- hosts: websrvs
tasks:
- name: install nginx
yum:
name: nginx
state: present
- name: data page
copy:
src: files/index.html
dest: /usr/share/nginx/html/
- name: start service
service:
name: nginx
state: started
enable: yes
-t 指定标签执行
ansible-playbook -t data.config nginx.yaml
变量的优先级从高到低如下
-e 选项定义变量 -->playbook中vars_files --> playbook中vars变量定义 -->host_vars/主机
名文件 -->主机清单中主机变量–> group_vars/主机组名文件–>group_vars/all文件–> 主机清单
组变量
可以防止dos攻击
iptables -A INPUT -m connlimit --connlimit-above 10 -j REJECT
Limit模块:限制流量
iptables -A INPUT -p icmp -m limit --limit 10/minute --limit-burst 5 -j ACCEPT
state模块