ansible(二)

一.软件相关模块

1.yum(下载包)

正常操作
yum 与rpm的区别
yum可以解决依赖关系
rpm 全称readhat package manager(红帽包管理工具),需要自己解决依赖
yum源配置

查看yum源配置

cat /etc/yum.repos.d/epel.repo
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch  #名字
baseurl=http://mirrors.aliyun.com/epel/7/$basearch  #rpm源的地址,后面可以写http,https,ftp,Samba,file:
failovermethod=priority
enabled=1 # 是否开启,1代表开启,0表示关闭
gpgcheck=0  #是否校验签名,1代表校验,0表示校验(校验安全性)
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
yum安装一个包
yum install -y nginx
yum安装一个包组

注:一个包组中有一类功能对于各个软件的处理

yum grouplist #查看包组信息
yum groupinstall 包组名 #安装包组
ansible提供的yum模块
(1)yum模块的参数

disablerepo #禁用源
enablerepo #启用源
name #包名
static #状态,包括安装和卸载
(2)远程在web组的被管控机上下载wget包
ansible web -m yum -a 'name=wget'
(3)将yum源发送到管控机(使用镜像源下载更快,有的包在yum源中),下载安装pip包
ansible web -m copy -a 'src=/etc/yum.repos.d/epel.repo dest=/etc/yum.repos.d/epel.repo'
ansible web -m yum -a 'name=python2-pip' #下载安装pip包
(4)远程卸载wget包
ansible web -m yum -a 'name=wget state=absent'
(5)远程安装包组,@代表包组
ansible web -m yum -a 'name="@Development Tools"'

 

2.pip(下载yum中没有的包)

正常操作
将代码的环境依赖打包到文件中
pip freeze > a.txt
安装依赖
pip install -r a.txt
安装单个包
pip install 包名
查看安装了哪些包
pip list
ansible提供的pip模块
(1)pip模块的参数

(2)安装flask
ansible web -m pip -a 'name=flask'
requirements #安装电脑上的所有

 

3.service(启动)

正常操作
安装nginx
ansible web -m yum -a 'name=nginx'
nginx的启动
systemctl start nginx #centos7
service nginx start #centos6
查看nginx进程是否启动
ps -ef|grep nginx
ss -tnlp
设置nginx开机自启动
systemctl enabled nginx #centos7开机自启动
chkconfig nginx on #centos6开机自启动
ansible提供的service模块
(1)启动nginx
ansible web -m service -a 'name=nginx,static=started'
(2)查看是否启动
ss -tnlp
(3)关闭nginx
ansible web -m service -a 'name=nginx,ststic=stoped'

 

4.cron计划任务,当时任务,周期任务

正常操作
每两个小时执行一次命令
分时日月周 任务
crontab 0 */2 * * * pwd # 每两个小时执行一次命令
编辑计划任务
crontab -e
查看计划任务
crontab -l
ansible提供的cron模块
(1)cron模块的参数
day 天
disabled 禁用
hour 小时
job 任务
minute 分钟
month 月
name 任务名字
weekday 周
(2)新建一个计划任务
ansible web -m cron -a 'minute=27 job="touch /tmp/aaaaaaa.txt" name=touchfile'
(3)删除计划任务
ansible web -m cron -a 'name=touchfile state=absent'
(4)禁用计划任务(会加进去,以井号表示禁用)
ansible web -m cron -a 'minute=30 job="touch /tmp/bbbb.txt" name=touchfile2 disabled=yes'

 

二.用户相关模块

1.user

正常操作
linux中用户的分类
管理员 root uid 0
普通用户
	系统用户 不能登录系统 uid 1-999 centos7,uid 1-499 centos 6
	登录用户 可以登录 uid 1000-65535 centos7,uid 500-65535 centos6
linux中用户组的分类
管理员组 root 0
系统用户组 uid 1-999 centos7,uid 1-499 centos 6
登录用户组 uid 1000-65535 centos7,uid 500-65535 centos6
创建新用户
useradd shy

useradd的参数

-d 指定用户的家目录(默认在/home下)
-g 指定用户的组
-G 指定用户的附加组
-s 指定登陆后使用的shell
-r 创建一个系统组(系统用户)
useradd -r shy 创建一个系统用户,从999倒叙
useradd -s /sbin/nologin shy #创建普通用户,从1000开始升序
useradd -d /opt/shy #创建用户时,指定用户的家目录
useradd -u 3000 shy2 #指定uid创建用户
删除用户
userdel alex #仅删除用户
userdel -r alex #删除用户和加目录
ansible提供的user模块
(1)user模块的参数
group 组
groups 附加组
home 家目录
name 用户名
password 密码
shell 用户登录后使用shell
system 创建系统用户
uid 指定id创建用户
state 状态
remove 删除用户
(2)创建一个uid为4000,不能用shell登录的,指定用户的家目录,用户的附加组
ansible web  -m user -a 'name=ccc uid=4000 home=/opt/ccc groups=root shell=/sbin/nologin'
(3)删除用户(家目录不会删除)
ansible web -m user -a 'name=shy static=absent'
(4)删除用户(家目录也删除)
ansible web -m user -a 'name=shy static=absent remove=yes'

 

2.group

正常操作
创建用户组
groupadd shy
删除用户组
groupdel shy
查看用户组信息
tail -l /etc/group
ansible提供的group模块
(1)group模块的参数

gid 组的id
name 组名
system 系统组
static 状态
创建一个组名为shy的系统组
ansible web -m group -a 'name=shy system=yes'
删除组
ansible web -m group -a 'name=shy static=absent'
小练习

在web组中创建一个用户组shy1

ansible web -m group -a 'name=shy1'

在web组中创建一个用户组shy2

ansible web -m group -a 'name=shy2'

把/etc/fstab文件复制到/tmp/f

ansible web -m copy -a 'src=/etc/fatab dest=/tmp/f'

安装nginx,并设置开机自启

ansible web -m service -a 'name=nginx enabled=yes'

 

三.ansible剧本

1.作用

当相同的任务多次执行时,将任务内容编辑到脚本中,以后执行时,执行脚本即可,节省时间

2.yaml编程语言

(1)作用

常用来写配置文件

(2)语法表示
字典的表示 key:value
列表的表示 -

注:后缀名.yaml或.yml

例:

name:shy
age:18
addr:heilongjiang
hobby:
- running
- skiing
- sleeping

注:yaml对语法要求十分严格(:后一定要有一个空格,=前后一定不能有空格)

(3)用yaml编写配置文件
 - hosts: web
   tasks:
   - name: creategroup
     group: name=shy10
   - name: createuser
     user: name=user10

3.ansible-palybook模块 (用于执行.yml文件)

(1)ansiblepalybook的参数

-C, --check   # 检查,白跑,干跑
-f FORKS, --forks=FORKS #用来做并发
--list-hosts # 列出主机列表
--syntax-check # 语法检查 
(2)检查文件的语法
ansible-playbook --syntax-check p1.yml
(3)跑一下配置文件试试(不产生结果)
ansible-playbook -C p1.yml 
(4)真正的执行配置文件
ansible-playbook  p1.yml 

注:执行顺序,从上往下执行

(5)特性

幂等性:不管执行多少遍,结果都是一样的

4.传参

(1)语法
- hosts: web
  tasks:
  - name: create{{ user }}
    user: name={{ user}}
(2)传参方式
方式一
ansible-playbook -e 'user=shy11' p2.yml
方式二

修改/etc/ansible/hosts文件

[db]
192.168.107.132 user=shy12
192.168.107.133 user=shy13
方式三

修改/etc/ansible/hosts文件

[db:vars] #表示组的参数
user=shy14
方式四
- hosts: db
  vars:
  - user: shy15
  tasks:
  - name: create{{ user }}
    user: name={{ user}}
方式五
- hosts: db
  tasks:
  - name: sum
    shell: echo 7+8|bc
    register: user
  - name: createuser
    user: name={{user.stdout}}
(3)bc模块(用于计算)
echo 3+4|bc #计算3+4
(4)传参优先级
-e > playbook > hosts

 

 

 

 

 

原文地址:https://www.cnblogs.com/shanghongyun/p/10476283.html