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
ansible(二)的更多相关文章
- Ansible二三事
现在,慢慢测试一下ANSIBLE的功能,不过,总体感觉是,比SALTSTACK运行要慢,好像还有点点不稳定.... 但,在局域环境的表现,还是不错的... ~~~~~~~~~~~~~ 有几个小事要注意 ...
- ansible 二主机和组
主机清单的管理 Ansible安装好之后的主机清单配置文件有如下两种: 1.yum安装,配置文件默认路径为: /etc/ansible/hosts 2.源码包安装,主机清单配置文件路径需要从软件包里面 ...
- Ansible(二) - 配置及命令简介
Ⅰ. Ansible Inventory Hosts文件配置 # mkdir /etc/ansible # touch /etc/ansible/hosts # cat /etc/hosts 127. ...
- Ansible Ubuntu 安装部署
一.安装: $ sudo apt-get install ansible 二.配置: a.基本配置 $ cd /etc/ansible/ $ sudo cp hosts hosts_back 备份一个 ...
- Ansible学习笔记
一.Ansible简介 Ansible是一种agentless(基于ssh),可实现批量配置.命令执行和控制,基于Python实现的自动化运维工具. 其特性有: ①模块化:通过调用相关模块,完成指定任 ...
- Ansible - 简介和应用自动化基础实践
installAnsible简介和应用自动化基础实践 一.引入: 1.1 如官方定义,Ansible is The simplest way to automate apps and IT infr ...
- ansible 自动化运维
Ansible 自动化运维 ansible安装epel #yum list all *ansible*#yum install *ansible*#yum info ansible#rpm -ql a ...
- ansible学习笔记一
ansible学习笔记一 参考博客: ansible学习 - 51CTO博客 一.安装 1 .下载epel源 wget -O /etc/yum.repos.d/epel.repo http://mir ...
- Ansible基础入门
1.1 Ansible是什么 随着移动互联.物联网.互联网+.大数据.云计算等大规模应用的催生推动,以及人们日常生活的互联网化,互联网的蓬勃发展不仅冲击影响着整个经济体,更对人们的生活理 ...
随机推荐
- 详解Qt,并举例说明动态编译(shared)和静态编译(static)以及debug and release 编译版本区别(可产生静态版的Debug版本,需要把-release 改为 –debug-and-release)
作为初入Qt学习的新人,花了整整一两天时间,对Qt编译版本等问题进行了一步步探索,首先感谢网站博客中文章,开始也不是很明白一些几个问题: 1.Qt版本问题 作为初学者,可能下载时这么多版本,如何选择呢 ...
- matlab 小波处理工具箱
1. wavedec:多尺度(multilevel)一维小波分解 [C,L] = wavedec(X,N,'wname') [C,L] = wavedec(X,N,Lo_D,Hi_D) 返回值 L(b ...
- 如何移除解决方案中的TFS版本控制
1.清除(删除)项目下的所有版本控制文件,这些文件有:*.vssscc,*.vspscc删除这些版本控制文件比较简单,搜索这些后缀的文件,删除即可. 2.修改项目的解决方案文件:*.sln (1).先 ...
- 使用哈希加盐法来为密码加密(补充JAVA的实现)
使用哈希加盐法来为密码加密 转自:http://www.cnblogs.com/jfzhu/p/4023439.html 转载请注明出处 (一)为什么要用哈希函数来加密密码 如果你需要保存密码(比 ...
- eclipse中让关闭的项目不再显示
- BeagleBone Black第八课板:建立Eclipse编程环境
BBB第八课板:建立Eclipse编程环境 最近建立了一个新的编程环境.感觉很方便,给大家分享.除了先前BBB董事会远程桌面直接写shell脚本或C外部程序,经Debain 7.5根据该制度还试图用编 ...
- 如何使用GDI绘制半透明矩形
/*使用GDI绘制半透明矩形*/ void CDirectXDraw::DrawHalfOpacityRect(HDC hdc,CRect rect) { CDC dc; dc.Attach(hdc) ...
- python中string的操作函数
在python有各种各样的string操作函数.在历史上string类在python中经历了一段轮回的历史.在最开始的时候,python有一个专门的string的module,要使用string的方法 ...
- ios 双指捏合放大缩小图片的例子
图片跟随双指捏合的距离放大或者缩小. 利用-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 实现. touchesMov ...
- js 层的显示和隐藏
<!DOCTYPE html><html lang="en" xmlns="http://www.w3.org/1999/xhtml"> ...