ansible之模块二及playbook

作者: ropon 分类: 网站集群 发布时间: 2019-12-23 11:25

yum模块

yum源配置

yum查看安装包组
yum grouplist #查看
yum groupinstall 包名 #安装

#参数
disablerepo #禁用源
enablerepo #启动源
name #包名
state
    install 或(present installd latest) #安装
    remove 或(absent removed) #卸载

#yum安装nginx
ansible 192.168.8.32 -m yum -a 'name=nginx'

#安装python2 pip
ansible 192.168.8.32 -m yum -a 'name=python2-pip'

#yum安装包组 用@
ansible 192.168.8.32 -m yum -a 'name=@Cinnamon'

pip模块

pip install 包
pip freeze > ropon.txt #导出当前python环境依赖
pip install -r ropon.txt #安装文件中的包

#参数
requirements
#安装flask
ansible 192.168.8.32 -m pip -a 'name=flask'

service模块

#参数
enabled #加入开机自启 no|yes
name #服务名
state
    started #启动服务
    stopped #停止服务
    restarted #重启服务
    reloaded #重载服务
    enabled #开机自启

#启动服务
ansible 192.168.8.32 -m service -a 'name=nginx state=started'
#查看
ansible 192.168.8.32 -m shell -a 'netstat -tunpl'
#停止服务
ansible 192.168.8.32 -m service -a 'name=nginx state=stopped'
#将nginx服务加入开机自启
ansible 192.168.8.32 -m service -a 'name=nginx enabled=yes'

cron模块

#参数
day #天
disabled #禁用
hour #小时
minute #分组
month #月份
job #任务
name #任务名
weekday #周

#创建计划任务
ansible 192.168.8.32 -m cron -a 'minute=49 job="touch /root/cron_test.txt" name=crontest'
#删除计划任务
ansible 192.168.8.32 -m cron -a 'name=crontest state=absent'
#禁用计划任务 # 表示禁用
ansible 192.168.8.32 -m cron -a 'minute=49 job="touch /root/cron_test.txt" name=crontest2 disabled=yes' 
#启动禁用任务
ansible 192.168.8.32 -m cron -a 'minute=49 job="touch /root/cron_test.txt" name=crontest2 disabled=no' 

user模块

管理员
普通用户
系统用户

#参数
group #组
groups #附加组
home #家目录
name #用户名
password #密码
remove
shell
system 
state #状态

#创建用户mysql 指定家目录/root/mysql 指定附加组root 指定uid 指定shell不能登录
ansible db -m user -a 'name=mysql uid=4000 home=/root/mysql groups=root shell=/sbin/nologin'

#删除mysql用户但不删除此用户家目录
ansible db -m user -a 'name=mysql state=absent'

#删除mysql用户并删除此用户家目录
ansible db -m user -a 'name=mysql state=absent remove=yes'

group模块

#参数
gid #组id
name #组名
system #系统组
state

#创建mysql系统组
ansible db -m group -a 'name=mysql system=yes'

#删除mysql系统组
ansible db -m group -a 'name=mysql state=absent'

ansible脚本

#yaml
#格式 严格缩进 严格对齐
    #字典 key:value
    #列表 -
#后缀名
    #yaml、yml

ansible-playbook

#执行顺序 从上往下
#特性 不管执行多少次结果都一样

#参数
-C #检查 会执行一次脚本但不生效
-f #并发
--list-hosts #列出主机列表
--syntax-check #语法检查

简单例子

#创建用户例子
- hosts: 192.168.8.32
  tasks:
  - name: createuser
    user: name=ropon01

#执行脚本
ansible-playbook p1.yml
#检查是否创建成功
ansible 192.168.8.32 -m shell -a 'id ropon01'

传参 动态执行脚本

- hosts: 192.168.8.32
  tasks:
  - name: create{{ user }}
    user: name={{ user }}

#方式一 -e
ansible-playbook -e 'user=ropon02' p2.yml
#检查是否创建成功
ansible 192.168.8.32 -m shell -a 'id ropon02'

#方式二 主机后面 指定参数 192.168.8.32 user=ropon03
ansible-playbook p2.yml
#检查是否创建成功
ansible 192.168.8.32 -m shell -a 'id ropon03'

#方式三 主机组[:vars] 组后面指定参数(新起一行写与之前的主机名)
[web:vars]
user=ropon04

cat p3.pml
- hosts: web
  tasks:
  - name: create{{ user }}
    user: name={{ user }}

ansible-playbook p3.yml
#检查是否创建成功
ansible web -m shell -a 'id ropon04'

#方式四 yml文件vars指定参数
cat p3.pml
- hosts: web
  vars:
  - user: ropon05
  tasks:
  - name: create{{ user }}
    user: name={{ user }}

ansible-playbook p4.yml
#检查是否创建成功
ansible web -m shell -a 'id ropon05'

#方式五 register
cat p5.yml
- hosts: web
  tasks:
  - name: sum
    shell: echo 3+3|bc
    register: user
  - name: createropon06
    user: name=ropon0{{user.stdout}}

ansible-playbook p5.yml

#参数优先级
-e > playbook vars > 主机hosts文件

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!