1.日常运维要做的事:
1.1 软件安装 --依赖 漏洞 升级
1.2 服务的配置 --架构搭建 负载均衡 高可用
1.3 运行脚本
1.4 升级 --版本发布-- --持续集成
1.5 备份
1.6 告警
2.ansible、puppet和salt的区别
优点 | 缺点 | |
ansible | 精简和快速,不需要单独安装客户端,SSH相当于客户端 | 依赖大量python模块来实现批量管理,较难扩展 |
puppet | 三者中功能最全面 | 安装部署较其他复杂 |
salt | 采用yaml格式编写文件比较简单,可在客户端执行命令扩展能力极强 | 产品不稳定,缺乏生成深度报告的能力 |
2.ansible的组成:
2.1 host invemtory : 定义客户机
2.2 playbook :剧本,自动化执行脚本
2.3 module : 模块 实现一个个功能的程序
2.4 plugin : 插件 实现一些额外的小功能
2.5 ansible用于执行主程序,ansible-playbook执行playbook的任务,ansible-doc获得各模块的帮助信息
3.asible的安装和配置
ansible的安装需要先现在epel-release ,这是一个资源库,集成了大量的linux软件包。
3.1 yum install epel-release -y
3.2 yum install ansible -y
3.3 ansible的配置文件:
/etc/ansible/asible.cfg : 此文件定义了主机清单路径,连接清单中主机的方式等等,可以重新定义hosts的地址,默认是/etc/ansible/hosts
/etc/ansible/hosts :此文件存放了主机清单,如果主机的ssh服务端口号不是默认的22就要指明端口号
(配置你要通过ansible操作的主机,前提是对方主机一定是可联通的,必须要打开)
4. ansible的使用 :
HOST-PATTERN 匹配主机模式
-m 模块名
-a 模块执行的参数
-f 生成几个子执行程序
-u username 某主机的用户名
-c connection 连接方式
4.1 演示:指定ansible管理的所有主机都在默认目录(user的家目录)创建一个名叫csdn的文件夹
5.ansible的模块
5.1copy模块,复制ansible主机的文件到目标主机
ansible all -m copy -a "src=/lianxi/ansible-copy dest=/lianxi/ansible mode=777 owner=sanchuang group=sanchuang"
all:指定ansible/hosts的所有主机执行接下来的命令
src:指定源文件路径
dest:指定目标主机的文件路径
owner:指定属主
group:指定属组
mode:指定权限
5.2fetch模块 拉取目标主机的文件到ansible主机
ansible webser -m fetch -a "src=/etc/hostname dest=/lianxi mode=644"
5.3 command模块:在远程主机上执行命令,非键值对显示,不进行shell解析(不会解析它的管道符号 会认为ifconfig|grep 是一个命令)
ansible all -m command -a "ifconfig”
5.4shell模块:和command很类似,但是可以解析管道符之类的功能
ansible all -m shell -a "ifconfig|grep inet"
5.5 file模块:设置文件属性(创建文件夹)
path :目标路径
state:
--directory :创建目录
--absent:删除文件和目录
--touch :新建空文件
--hard :硬链接
--soft:软连接
group
owner
mode
例子:ansible all -m file -a "path=/tmp/sanchuang state=directory"
5.5cron模块: 生成计划任务
* * * * * :分、时、日、月、周
state:
--present:生成
--absent:删除
生成计划任务:ansible all -m cron -a "minute=*/3 job='date >>/tmp/time.txt' name=date_test state=present"
删除计划任务: ansible 192.168.0.48 -m cron -a "name=date_test state=absent"
5.7yum模块:安装软件包的模块
enablerepo:启用repo模块
disablerepo:禁用repo模块
state:
--installed :安装
--present:安装
--latest:安装
--absent:删除
--removed:删除
name :名字
ansible all -m yum -a "name=wget state=installed"
ansible all -m yum -a "name=wget state=absent"
(wget是一个下载文件的工具)
5.8service模块:服务管理模块
enabled:开机启动
runlevel:启动级别
state:
--started(启动)
--stopped(关闭)
--restarted(重启)
--reloaded(重新加载)
安装文件传输服务vsftpd:ansible all -m yum -a "name=vsftpd state=installed"
5.9script模块:把本地的脚本服务传递到远端执行,
ansible all -m script -a "/root/test.sh"
6.使用ansible部署web服务
6.1安装nginx
6.2修改配置文件 /etc/nginx/conf.d/sc.conf
server {
listen 8080 ;
server_name www.sc.com;
root /opt/dist;
access_log /var/log/nginx/sc_access.log main;
location / {
}
location =/api {
}
}
6.3传递index.html到/opt/dist目录下
6.4启动服务,测试是否能访问