软件相关模块
yum
rpm 和 yum 的区别
rpm:RedHat package manager yum 可以解决依赖关系
yum 源配置
使用 yum 下载时需要先下载 epel
- [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 grouplist # 查看包组信息
- yum groupinstall # 安装包组
- disablerepo #禁用源
- enablerepo #启用源
- name #包名
- state install (`present'or `installed', `latest'), or remove (`absent' or `removed')
- ep
- ansible web -m yum -a 'name=wget' # 安装 wget
- ansible Web -m yum -a 'name=python2-pip' # 安装 python2-pip
- ansible Web -m yum -a 'name=wget state=absent' # 卸载软件包
- ansible Web -m yum -a 'name="@Development Tools"' # 安装包组
检查模块是否安装成功
rpm -qa|grep 模块名
pip
pip install 安装包
pip freeze> a.txt 将 python 的环境打包到文件中
pip install -r a.txt 安装文件中的包
pip list 查看所有的以安装成功的包
- ansible Web -m pip -a 'name=flask' # 安装 flask 模块
- service
- ps -ef|grep nginx #查看进程
- ss -tnlp # 查看端口信息
- systemctl start nginx # centos7
- service nginx start # centos6
- systemctl enabled nginx # centos7 开机自启动
- chkconfig nginx on # centos6 开机自启动
- ansible Web -m service -a 'name=nginx state=started' # 启动 nginx
- ansible Web -m service -a 'name=nginx state=stopped' # 关闭 nginx
计划任务
- cron
- * * * * * job
分 时 日 月 周 任务
0 */2 * * * job 每隔两个小时
0 12,13 * * * job 12 点和 13 点
0 12-17 * * * job 12 点到 17 点
0 12-17/2 * * 1,3,6,0 周 1, 周 3, 周 6, 周 7 12 点到 17 点每隔两个小时
- crontab -e # 编辑计划任务
- crontab -l # 查看计划任务
- crontab -r # 删除计划任务
day 天
disabled 禁用
hour 小时
job 任务
minute 分钟
month 月
name 任务名字
weekday 周
minute=26 值在第 26 分钟
- ansible db -m cron -a 'minute=26 job="touch /tmp/xzmly.txt"name=touchfile' # 新建一个计划任务
- ansible db -m cron -a 'name=touchfile state=absent' # 删除一个计划任务
- ansible db -m cron -a 'minute=26 job="touch /tmp/xzmly.txt"name=touchfile disabled=yes' # 禁用计划任务, 以 #表示禁用
用户相关
user
用户:
管理员 root 0
普通用户
系统用户 不能登录 1-999 centos7 1-499 centos6
登录用户 可以登录 1000-65535 centos7 500-65535 centos6
用户组:
管理员组 root 0
系统用户组 1-999 centos7 1-499 centos6
登录用户组 1000-65535 centos7 500-65535 centos6
-d 指定用户的家目录
-g 指定用户的组
-G 执行用户的附加组
-s 指定登录后使用的 shell
-r 创建一个系统组
useradd -r wusir 创建系统用户, 从 999 倒序
useradd -s /sbin/nologin alexsb 创建的是普通用户, 从 1000 开始升序
useradd -d /opt/alexsb2 alexsb2 创建用户时指定用户的家目录
useradd -u 3000 alexsb6 # 创建用户并指定用户的 uid
userdel alex 删除用户
userdel -r alexsb2 删除用户并删除用户的家目录
\
group 组
groups 附加组
home 家目录
name 用户名
password 密码
remove ?
shell 用户登录后使用的 shell
system 创建一个系统用户
uid 用来指定用户的 id
state 状态
- ansible db -m user -a 'name=wulaoshi uid=4000 home=/opt/wulaoshi groups=root shell=/sbin/nologin' #创建一个用户, 并指定用户的 id, 用户的家目录, 用户的附加组, 用户的 shell
- #shell=/sbin/nologin 无需输入密码登录
- ansible db -m user -a 'name=wulaoshi state=absent' #删除用户但是不删除用户的家目录
- ansible db -m user -a 'name=wulaoshi3 state=absent remove=yes' # 删除用户并删除用户的家目录
在查询创建的新用户时, 可以使用
cat /etc/passwd
cat /etc/passwd|grep 用户名
group
groupadd yuchao 创建用户组
groupdel yuchao 删除用户组
gid 组的 id
name 组名
system 系统组
- state
- ansible db -m group -a 'name=wulaoshi system=yes' #创建系统组
- ansible db -m group -a 'name=wulaoshi state=absent' # 删除组
- ep
- Web
创建一个用户组 alex10
ansible Web -m group -a 'name=alex10'
创建一个用户 wusir10
ansible Web -m user -a 'name=wusir10'
把 / etc/fstab 文件复制到远程主机上 / tmp/f
ansible Web -m copy -a 'src=/etc/fstab dest=/tmp/f'
安装 nginx, 并启动, 设置开机自启动
- ansible Web -m yum -a 'name=nginx'
- ansible Web -m service -a 'name=nginx enabled=yes'
ansible 剧本
YAML
是一个编程语言
xml 是用来写配置文件的一个语言
INI
YAML
字典: key: value
列表: [] -
后缀名 YAML YAML
ansible-playbook 命令格式
执行顺序: 从上往下
特性: 幂等性 不管执行多少遍, 结果都是一样的
- ansible-playbook [options] playbook.YAML [playbook2 ...]
- -C, --check # 检查, 白跑, 干跑
- -f FORKS, --forks=FORKS #用来做并发
- --list-hosts # 列出主机列表
- --syntax-check # 语法检查
简单用法 # 格式非常严谨
需要创建一个 p1.YAML 文件
标准:
- - hosts: Web
- tasks:
- - name: creategroup
- group: name=alex10
- - name: cretaeuser
- user: name=wusir10
伪代码
hosts: gb
tasks:
- name: 第 san 个姑娘
dong: 第 san 个姑娘
传参
标准:
- - hosts: Web
- tasks:
- - name: create{{ user }}
- user: name={{ user}}
- # 在运行前需要检查代码是否准确哦
第一种方式
ansible-playbook -e 'user=alexsb10' p2.YAML
第二种方式 在 / etc/ansible/hosts 文件修改
- [db]
- 192.168.107.132 user=alexsb11
- 192.168.107.133 user=alexsb12
第三种方式 在 / etc/ansible/hosts 文件修改
- # 放在 [db] 下面
- [db]
- 192.168.107.132
- 192.168.107.133
- [db:vars] #表示组的参数
- user=alexsb13
第四种方式
- - hosts: db
- vars:
- - user: alexsb14
- tasks:
- - name: create{{ user }}
- user: name={{ user}}i
第五种传参方式
- - hosts: db
- tasks:
- - name: sum
- shell: echo 7+8|bc
- register: user
- - name: createuser
- user: name={{user.stdout}}
传参方式的优先级
-e> playbook> hosts 文件
内容总结
模块
- yum 安装包
- @
- pip 安装 python 的模块
- - requirements
- - service
- - enabled=yes
- - corn
- - disabled=yes
- - user
- - system=yes
- - group
- - system=yes
剧本
- YAML 格式 (格式要求比较严格)
- 传参
- -e
- hosts 文件 主机列表后面
- hosts 文件[groupname:vars]
- playbook 里面写 vars
- register
- 传参的优先级
- -e> playbook> hosts
来源: http://www.bubuko.com/infodetail-2962001.html