Linux-ansible
Posted Alive
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux-ansible相关的知识,希望对你有一定的参考价值。
目的
项目:代码发布系统
实现功能: 发布代码
前戏
- ansible
- openpyxl
- 项目的开发
ansible
python开发的一款开源工具
批量到执行远程主机命令
安装
yum install ansible -y
查看ansible生成的文件
rpm -ql ansible
查看ansible生成的命令
ansible # 用来执行ansible的一些命令
ansible-doc #用来查看ansible的模块的帮助信息
ansible-playbook #用来执行playbook
ansible-galaxy #用来下载第三方的playbook
操作都是幂等的
ansible 命令格式
ansible <host-pattern> [options]
-a MODULE_ARGS #模块的参数
-C, --check #测试,干跑
-f FORKS #指定并发数
--list-hosts #列出host-pattern主机
--syntax-check #语法检查
-m MODULE_NAME, #指定模块
生成公钥私钥
ssh-keygen
复制公钥到远程主机
ssh-copy-id 192.168.19.9
ping 命令走icmp协议
ansible 第一个命令
ansible all -m ping #跟系统自带的ping不一样
host-pattern 格式
- [web]
192.168.19.9
192.168.19.26
[db]
192.168.19.26
192.168.19.37
[cache]
192.168.19.37 - www[001:006].example.com
- 指定所有 all
- 指定单台机器(指定多个机器)
- 指定分组(多个分组)
- 指定分组并集 # ansible ‘web:db‘ -m ping
- 指定分组的交集 # ansible ‘web:&db‘ -m ping
- 指定分组的差集 #ansible ‘web:!db‘ -m ping
命令相关
command
ansible web -m command -a 'pwd'
ansible web -a 'chdir=/tmp pwd' #切换到/tmp并执行pwd
ansible web -a 'creates=/etc/ mkdir /data2' #判断creates是否存在,真就忽略后面的操作
ansible web -a 'removes=/tmp/data mkdir /tmp/data2' #判断removes是否存在,假就忽略后面的操作
补充
tail -1 /etc/shadow 查看最后一个用户
echo 'test1'|passwd --stdin test1 设置用户密码,不需要二次确认
ansible-doc
Usage: ansible-doc [-l|-F|-s] [options] [-t <plugin type> ] [plugin]
-a #列出所有的模块
-l #列出ansible的模块
-s #片段式显示模块的信息
# 列出模块的详细信息
shell
ansible web -m shell -a 'echo "test1"|passwd --stdin test1' #修改密码
ansible 192.168.19.9 -m shell -a '/root/a.sh' #指定远程主机上的shell脚本
ansible 192.168.19.9 -m shell -a '/root/a.py' #指定远程主机上的python文件
sctipt
ansible all -m script -a '/root/a.sh' #执行管控机上的shell脚本
文件相关的 命令
copy 复制管控机文件到被管控机
ansible web -m copy -a 'src=/etc/fstab dest=/data/fst' #src指定源文件 dest指定目标文件
ansible web -m copy -a 'src=/etc/fstab dest=/data/fst backup=yes' #backup备份
ansible web -m copy -a 'src=/etc/init.d dest=/data/' #复制目录和目录下的文件到远程主机,远程主机也是一个文件夹
ansible web -m copy -a 'src=/etc/init.d/ dest=/data/' #复制目录下的文件
ansible web -m copy -a 'src=/etc/fstab dest=/data/fst backup=yes mode=600' #mode 指定权限,owner指定文件的属主,group用来指定属组
file
ansible db -m file -a 'path=/data10 state=directory' #path指定地址,state=directory表示创建文件夹
ansible db -m file -a 'path=/data10/test1 state=touch' #state=touch 表示创建新文件
ansible db -m file -a 'path=/data10/test10 src=/data10/test1 state=link' #src表示源文件,path是不是目标,state=link是不是创建一个软连接
ansible db -m file -a 'path=/data10/test1 state=absent' #state=absent 代表删除
补充
ln 创建硬链接 链接文件变更,源文件不变
ln -s 创建软连接 链接文件变更,源文件变
fetch
ansible db -m fetch -a 'src=/etc/fstab dest=/tmp' #src源地址(在被控机器上),dest目标地址(管控机上的地址)每个管控机的文件都生成了一个目录,会保持文件的原来目录结构
软件相关
补充
[name] #分组
name=CentOS-$releasever - Base - mirrors.aliyun.com #这个分组的名字
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/ #分组的url,叫baseurl
http://mirrors.aliyuncs.com/centos/$releasever/os/$basearch/
http://mirrors.cloud.aliyuncs.com/centos/$releasever/os/$basearch/
gpgcheck=0 # gpgcheck=1需要验证key文件,gpgcheck=0不验证key
enabled=1 #enabled=1 表示分组可用,enabled=0表示分组是不可用的
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 #key文件
yum
ansible web -m yum -a 'name=nginx state=installed' # 安装nginx
ansible web -m shell -a 'rpm -qa|grep nginx' #查看nginx是不是安装成功
ansible web -m yum -a 'name=nginx state=absent' #卸载nginx
pip
ansible web -m pip -a 'name=Django==1.11.15' # 安装django
补充
pip freeze > file #给当前的python模块做快照
pip install [options] -r <requirements file> 安装
pip list #查看当前python安装的所有模块
以上是关于Linux-ansible的主要内容,如果未能解决你的问题,请参考以下文章