目录
2-2 创建克隆虚拟机,修改ip和uuid - 模拟一台管理机和一台被管理机
2-3 机器的连接 - 管理机连接多台用户机,为ansible做准备
2-4 ansible命令的ad-hoc(临时命令)使用 - 管理机使用ansible对指定用户机发布执行命令
2-5 ansible 实现简单的批量部署 - 使用yml文件的批量安装
2-5-2 准备配置文件,辅助yml文件,与上方yml文件在同一路径下
一、Python在运维中的经典应用
- ansible
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
- CMDB
CMDB存储与管理企业IT架构中设备的各种配置信息,它与所有服务支持和服务交付流程都紧密相联,支持这些流程的运转、发挥配置信息的价值,同时依赖于相关流程保证数据的准确性。
- jumpserver 多云环境的堡垒机
- openstack
OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。
- K8s(go语言开发) - kubernetes
k8s是一个编排容器的工具,其实也是管理应用的全生命周期的一个工具,从创建应用,应用的部署,应用提供服务,扩容缩容应用,应用更新,都非常的方便,而且可以做到故障自愈,例如一个服务器挂了,可以自动将这个服务器上的服务调度到另外一个主机上进行运行,无需进行人工干涉。
- dokcer (go语言开发)
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的inux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
二、Ansible的基本使用
2-1 ansible的安装
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo yum install ansible -y
ansible +双击TAB 查看安装完成的相关内容
2-2 创建克隆虚拟机,修改ip和uuid - 模拟一台管理机和一台被管理机
- hostnamectl set-hostname standby 修改主机名
- vim /etc/sysconfig/network-scripts/ifcfg-eth0
- 修改静态ip地址和删除uuid
- systemctl restart network 重启网络
- vim /etc/hosts 修改主机文件的主机名和指向ip
- 重启显示主机名信息更改
2-3 机器的连接 - 管理机连接多台用户机,为ansible做准备
- ssh 10.0.0.200 10.0.0.100的机器shh连接200 的机子
2-3-1 管理被控端,管理机生成秘钥,推送至公钥
# 生成秘钥 ssh-keygen # 推送公钥给指定机器 ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.0.200 # 若推送机较多,可使用for循环进行推送 for i in {1..12};do ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.0.$i;done # 连接指定机,执行代码之后马上退出,用于测试是否连接成功 ssh 10.0.0.200 date
2-3-2 管理机配置被管理的主机清单
- vim /etc/ansible/hosts
[web] # 组名配置,管理使用组名调用 10.0.0.100 # 组名管理的主机号 10.0.0.200
- ansible web -m ping 进行连接测试web组
- 如下报错:未给100ip的主机分配公钥
- 成功显示
2-4 ansible命令的ad-hoc(临时命令)使用 - 管理机使用ansible对指定用户机发布执行命令
# 对所有管理主机,执行shell的df -h命令 ansible all -m shell -a "df -h" ansible all -m shell -a "free -m"
2-5 ansible 实现简单的批量部署 - 使用yml文件的批量安装
2-5-0 yml文件的规范
- 1- 不能使用tab键
- 2- 有严格的缩进要求·
- 3- 需要编写配置文件辅助yml文件的实施
2-5-1 准备yml文件实现自动化nginx部署
- vim playbook_nginx.yml
- hosts: web remote_user: root vars: http_port: 80 tasks: - name: Add Nginx Yum Repository yum_repository: name: nginx description: Nginx Repository baseurl: http://nginx.org/packages/centos/7/$basearch/ gpgcheck: no - name: Install Nginx Server yum: name=nginx state=present - name: Configure Nginx Server template: src=./default.conf.template dest=/etc/nginx/conf.d/default.conf notify: Restart Nginx Server - name: Start Nginx Server service: name=nginx state=started enabled=yes handlers: - name: Restart Nginx Server service: name=nginx state=restarted
2-5-2 准备配置文件,辅助yml文件,与上方yml文件在同一路径下
- vim default.conf.template
server { listen {{ http_port }}; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } }
2-5-3 执行yml文件
- 检查语法 [root@demo ~]# ansible-playbook --syntax playbook_nginx.yml
- 模拟执行 [root@demo ~]# ansible-playbook -C playbook_nginx.yml
- 执行 [root@demo ~]# ansible-playbook playbook_nginx.yml