一、主机清单
1.1直接配置密码
10.0.0.7 ansible_user=root ansible_port=22 ansible_password=”Lidao996″
主机清单中直接指定 用户名与,密码,端口
主机清单中直接指定 用户名与,密码,端口
1.2 主机清单分组之子组
#编辑hosts文件
vim /etc/ansible/hosts
#内容
[lb]
10.0.0.5
10.0.0.6
[web]
10.0.0.7 ansible_user=root ansible_port=22 ansible_password=”Lidao996″
10.0.0.[8:10]
[db]
10.0.0.51
10.0.0.52
[nfs]
10.0.0.41
[data:children]
db
nfs
bak
vim /etc/ansible/hosts
#内容
[lb]
10.0.0.5
10.0.0.6
[web]
10.0.0.7 ansible_user=root ansible_port=22 ansible_password=”Lidao996″
10.0.0.[8:10]
[db]
10.0.0.51
10.0.0.52
[nfs]
10.0.0.41
[data:children]
db
nfs
bak
二、模块
| 模块分类 | 模块 | 说明 |
|---|---|---|
| 调试 | ping模块 | 检查管理端与被管理端是否可以连接 |
| 命令与脚本 | command shell script | |
| 安装软件 | yum模块/apt模块 | name指定软件包名字 state=present 安装 latest安装或更新 absent删除 |
| 分发配置 | get_url模块 copy模块 unarchive模块 | wget功能 url指定下载的目标链接 dest下载到哪里,保存位置 类似于scp操作,不要发目录 src从哪里去 被管理目录 backup=yes是否备份 owner,group,mode=0755/0644 类似于copy,分发压缩包tar.gz src,dest owner,group,mode=0755/0644 |
| 用户,用户组 | user,group | 添加普通用户,添加虚拟用户,添加虚拟用户并指定uid,gid name,uid,group,shell,create_home,state |
| 文件,目录 | file模块 | touch,mkdir,rm,ln -s path指定文件或目录 state:touch创建文件 directory创建目录 link软连接 需要额外加上src选项 absent 删除 |
| 服务 | systemctl | systemctl命令 name,enabled,state |
2.1安装软件
#1.安装多个软件包
ansible all -m yum -a ‘name=tree,telnet,vim,lrzsz,htop,nmap state=present’
#2.删除tree软件包
ansible all -m yum -a ‘name=tree state=absent’
#3.安装指定软件包
ansible all -m yum -a ‘name=tree state=present’
ansible all -m yum -a ‘name=tree,telnet,vim,lrzsz,htop,nmap state=present’
#2.删除tree软件包
ansible all -m yum -a ‘name=tree state=absent’
#3.安装指定软件包
ansible all -m yum -a ‘name=tree state=present’
ansible all -m get_url -a ‘url=”https://nginx.org/download/nginx-1.28.2.tar.gz”
dest=/tmp/’
dest=/tmp/’
2.2分发
- 分发配置文件,软件包等等
ansible all -m copy -a ‘src=/etc/hosts dest=/etc/hosts backup=yes’
ansible web:lb -m copy -a ‘src=/server/conf/ngx/ngx.reop
dest=/etc/yum.repos.d/ngx.repo’
dest=/etc/yum.repos.d/ngx.repo’
1.代码安装后创建压缩包
2.放在m01管理机
3.unarchive分发并解压到指定目录
ansible web -m unarchive -a ‘src=nginx-1.28.2.tar.gz dest=/tmp/’
2.放在m01管理机
3.unarchive分发并解压到指定目录
ansible web -m unarchive -a ‘src=nginx-1.28.2.tar.gz dest=/tmp/’
ansible web:lb -m copy -a ‘src=/server/conf/ngx/ngx.repo
dets=/tmp/ owner=oldboy group=oldboy mode=”0600″‘
dets=/tmp/ owner=oldboy group=oldboy mode=”0600″‘
2.3用户管理
ansible all -m user -a ‘name=ans-lidao state=present’
ansible all -m user -a ‘name=ans-mysql shell=”/sbin/notogin”create_home=false stste=present’
groupadd -g 2026 ans-www
useradd -u 2026 -g ans-www -s /sbin/nologin -M ans-www
ansible all -m group -a ‘name=ans-www gid=2026 state=present’
ansible all -m user -a ‘name=ans-www uid=2026 group=ans-www shell=”/sbin/notogin”create_home=false state=present’
useradd -u 2026 -g ans-www -s /sbin/nologin -M ans-www
ansible all -m group -a ‘name=ans-www gid=2026 state=present’
ansible all -m user -a ‘name=ans-www uid=2026 group=ans-www shell=”/sbin/notogin”create_home=false state=present’
user模块的password选项可以更新密码
password=”加密后的密码”
{{‘mypassword’ | password_hash(‘sha512′,’mysecretsalt’) }}
密码 | 加密插件(’哈希算法’,’加盐’)
加盐避免哈希后的密码是一样的。
ansible all -m user -a ‘name=oldboy password={{“Lidao” | password_hash(“sha512″,”lidao996xxx”)}}’
password=”加密后的密码”
{{‘mypassword’ | password_hash(‘sha512′,’mysecretsalt’) }}
密码 | 加密插件(’哈希算法’,’加盐’)
加盐避免哈希后的密码是一样的。
ansible all -m user -a ‘name=oldboy password={{“Lidao” | password_hash(“sha512″,”lidao996xxx”)}}’
2.4文件相关的模块
#创建文件
ansible all -m file -a ‘path=/tmp/lidao.txt state=touch’
#创建目录
ansible all -m file -a ‘path=/tmp/lidao/oldboy/996/007/12306 state=directory’
#创建软连接
ansible all -m file -a ‘src=/etc/sysconfig/network-scripts/ifcfg-ens33 path=/tmp/ifcfg-ens33 state=link’
ansible all -m file -a ‘path=/tmp/lidao.txt state=touch’
#创建目录
ansible all -m file -a ‘path=/tmp/lidao/oldboy/996/007/12306 state=directory’
#创建软连接
ansible all -m file -a ‘src=/etc/sysconfig/network-scripts/ifcfg-ens33 path=/tmp/ifcfg-ens33 state=link’
2.5服务管理
ansible all -m systemd -a ‘name=crond enabled=yes state=started’
ansible all -m systemd -a ‘name=firewalld enabled=no state=stopped’
ansible bak -m systemd -a ‘name=rsyncd state=restarted’
ansible bak -m systemd -a ‘name=tomcat daemon_reload=true enabled=yes state=started’