运维自动化之ansible

03-12 1659阅读

pxe 一键安装操作系统

操作系统只是提供一个平台

lnmp 需要多软件协同完成的一个简单项目

服务器正常运行 日常运维 巡检

服务器上的软件正常运行 zabbix 普罗米修斯

系统调优,架构调优

运维自动化之ansible

运维自动化之ansible

云计算核心职能

  1. 搭建平台架构

  2. 日常运营保障

  3. 性能效率优化

运维自动化之ansible

运维自动化之ansible

相关工具

  • 代码管理(SCM):GitHub、GitLab、BitBucket、SubVersion

  • 构建工具:maven、Ant、Gradle

  • 自动部署:Capistrano、CodeDeploy

  • 持续集成(CI):Jenkins、Travis

  • 配置管理:Ansible、SaltStack、Chef、Puppet

  • 容器:Docker、Podman、LXC、第三方厂商如AWS

  • 编排:Kubernetes、Core、Apache Mesos

  • 服务注册与发现:Zookeeper、etcd、Consul  (大数据工程师去搞)

  • 脚本语言:python、ruby、shell、go

  • 日志管理:ELK、Logentries

  • 系统监控:Prometheus、Zabbix、Datadog、Graphite、Ganglia、Nagios

  • 性能监控:AppDynamics、New Relic、Splunk

  • 压力测试:JMeter、Blaze Meter、loader.io

  • 应用服务器:Tomcat、JBoss、IIS

  • Web服务器:Apache、Nginx

  • 数据库:MySQL、Oracle、PostgreSQL等关系型数据库;mongoDB、redis等NoSQL数据库

  • 项目管理(PM):Jira、Asana、Taiga、Trello、Basecamp、Pivotal Tracker

    自动化脚本 , 去写脚本,

    批量处理工具,ansible 替代脚本 同一时间下发 给500 台机器 新建 /data

    幂等性

    运维自动化之ansible

    1 Ansible 发展史及功能

    作者:Michael DeHaan( Cobbler pxe kikstar 与 Func 作者)ansible 的名称来自科幻小说《安德的游戏》中跨越时空的即时通信工具,使用它可以在相距数光年的距离,远程实时控制前线的舰队战斗2012-03-09,发布0.0.1版,2015-10-17,Red Hat宣布1.5亿美元收购。

    官网:https://www.ansible.com/
    官方文档:https://docs.ansible.com/

    1.1Ansible 功能

    有几千个模块,挑选十几个应用

    • 批量执行远程命令,可以对远程的多台主机同时进行命令的执行

    • 批量安装和配置软件服务,可以对远程的多台主机进行自动化的方式配置和管理各种服务

    • 编排高级的企业级复杂的IT架构任务, Ansible的Playbook和role可以轻松实现大型的IT复杂架构

    • 提供自动化运维工具的开发API, 有很多运维工具,如jumpserver(堡垒机)就是基于 ansible 实现自动化管理功能

      1.2 Ansible 特性

      • 模块化:调用特定的模块完成特定任务,支持自定义模块,可使用任何编程语言写模块(账号,软件等)

      • Paramiko(python对ssh的实现),PyYAML,Jinja2(模板语言)三个关键模块

      • 基于Python语言实现

      • 部署简单,基于python和SSH(默认已安装),agentless,无需代理不依赖PKI(无需ssl)

      • 安全,基于OpenSSH

      • 幂等性:一个任务执行1遍和执行n遍效果一样,不因重复执行带来意外情况,此特性非绝对

      • 支持playbook编排任务,YAML格式,编排任务,支持丰富的数据结构 剧本演员要按照 系统按照你规定的方式去执行命令

      • 较强大的多层解决方案 role

        1.3 Ansible 架构

        1.3.1 Ansible组成

        运维自动化之ansible

        • INVENTORY:Ansible管理主机的清单 /etc/anaible/hosts 需要管理的服务清单

        • MODULES:Ansible执行命令的功能模块,多数为内置核心模块,也可自定义(与开发有关)

        • PLUGINS:模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等,该功能不常用(与开发有关)

        • API:供第三方程序调用的应用程序编程接口(与开发有关)

          1.3.2 Ansible 命令执行来源
          • USER 普通用户,即SYSTEM ADMINISTRATOR

          • PLAYBOOKS:任务剧本(任务集),编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,通常是JSON格式的YML文件

          • CMDB(配置管理数据库) API 调用

          • PUBLIC/PRIVATE CLOUD API调用

            2.Ansible 安装和入门

            无论版本多低,只要基础功能有就行,

            2.1安装

            [root@mcb-11-8 ~]#yum install epel-release.noarch -y  先按装epel源
            [root@mcb-11-8 ~]#yum install ansible -y
            

            2.2查看基本信息

            [root@mcb-11-8 ~]#ansible --version
            ansible 2.9.27
              config file = /etc/ansible/ansible.cfg
              configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
              ansible python module location = /usr/lib/python2.7/site-packages/ansible
              executable location = /usr/bin/ansible
              python version = 2.7.5 (default, Aug  4 2017, 00:39:18) [GCC 4.8.5 20150623 (Red Hat 4.8.5-16)]
            

            2.3相关文件

            • /etc/ansible/ansible.cfg 主配置文件,配置ansible工作特性,也可以在项目的目录中创建此文件,当前目录下如果也有ansible.cfg,则此文件优先生效,建议每个项目目录下,创建独有的ansible.cfg文 件

            • /etc/ansible/hosts 主机清单

            • /etc/ansible/roles/ 存放角色的目录

              运维自动化之ansible

              [root@mcb-11-8 ~]#vim /etc/ansible/hosts  

              运维自动化之ansible [root@mcb-11-8 ~]#ansible -m  ping 192.168.11.8  -k 

              [root@mcb-11-8 ~]#ssh 192.168.11.4
              The authenticity of host '192.168.11.4 (192.168.11.4)' can't be established.
              ECDSA key fingerprint is SHA256:f5CWB5B1Xrf1hEtCK5pFcG+mmkQv+skC9fe3Kaa7B9w.
              ECDSA key fingerprint is MD5:d0:e4:b1:5f:db:31:26:bf:ec:b1:45:27:37:06:f6:95.
              Are you sure you want to continue connecting (yes/no)? yes
              Warning: Permanently added '192.168.11.4' (ECDSA) to the list of known hosts.
              root@192.168.11.4's password: 
              Last login: Mon Mar 11 14:54:23 2024 from 192.168.11.1
              [root@mcb-11-4 ~]# exit
              登出
              Connection to 192.168.11.4 closed.
              [root@mcb-11-8 ~]#ansible -m  ping 192.168.11.4  -k 
              SSH password: 
              192.168.11.4 | SUCCESS => {
                  "ansible_facts": {
                      "discovered_interpreter_python": "/usr/bin/python"
                  }, 
                  "changed": false, 
                  "ping": "pong"
              }
              [root@mcb-11-8 ~]#
              

              运维自动化之ansible

              运维自动化之ansible

              运维自动化之ansible

              ③[root@mcb-11-8 ~]#ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.11.6    此脚本可以批量添加文本

              运维自动化之ansible

              运维自动化之ansible

              2.4 ansible 主配置文件

              Ansible 的配置文件可以放在多个不同地方,优先级从高到低顺序如下

              2.5 inventory 主机清单文件

              ansible的主要功用在于批量主机操作,为了便捷地使用其中的部分主机,可以在inventory 主机清单文件中将其分组组织

              官方文档:

              https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html  

              **默认的inventory file  位置在:**     

                 **/etc/ansible/hosts**

              ansible 默认使用 ssh 连接
              所以管理前要免密登录
              [root@node1 ~]#vim /etc/ssh/ssh_config 
              #   StrictHostKeyChecking ask
              #   修改35行 StrictHostKeyChecking  no
              [root@node1 ~]#vim /etc/ansible/ansible.cfg 
              71 #host_key_checking = False
              开启71行的ansible的不验证即可

              2.6Ansible相关工具

              • /usr/bin/ansible 主程序,临时命令执行工具

              • /usr/bin/ansible-doc 查看配置文档,模块功能查看工具,相当于man ansible-doc -l |grep 关键字 具体模块名字

              • /usr/bin/ansible-playbook 定制自动化任务,编排剧本工具,相当于脚本

              • /usr/bin/ansible-pull 远程执行命令的工具

              • /usr/bin/ansible-vault 文件加密工具

              • /usr/bin/ansible-console 基于Console界面与用户交互的执行工具

              • /usr/bin/ansible-galaxy 下载/上传优秀代码或Roles模块的官网平台

                2.6.1ansible

                执行临时任务一次性任务

                用法

                ansible  [-m module_name] [-a args]
                命令     主机或者清单中的组 -m 指定模块      -a  执行的任务

                选项

                --version 					#显示版本
                -m module   				#指定模块,默认为command
                -v 							#详细过程 -vv -vvv更详细
                --list-hosts 				#显示主机列表,可简写 --list
                -C, --check   				#检查,并不执行
                -T, --timeout=TIMEOUT 		#执行命令的超时时间,默认10s
                -k, --ask-pass     			#提示输入ssh连接密码,默认Key验证 
                -u, --user=REMOTE_USER 		#执行远程执行的用户,默认root
                -b, --become    			#代替旧版的sudo 切换
                --become-user=USERNAME  	#指定sudo的runas用户,默认为root  vim /etc/sudoers 用户权限
                -K, --ask-become-pass  		#提示输入sudo时的口令
                -f FORKS, --forks FORKS 	#指定并发同时执行ansible任务的主机数

                例子:

                执行返回结果

                • 绿色:执行成功并且不需要做改变的操作

                • 黄色:执行成功并且对目标主机做变更

                • 红色:执行失败

                  配置文件中定义了

                  2.6.2 ansible-doc

                  2.6.3  ansible-console

                  2.6.4 playbook

                  2.7 模块

                  2015年底270多个模块,2016年达到540个,2018年01月12日有1378个模块,2018年07月15日1852个模块,2019年05月25日(ansible 2.7.10)时2080个模块,2020年03月02日有3387个模块虽然模块众多,但最常用的模块也就2,30个而已,针对特定业务只用10几个模块

                  常用模块帮助文档参考:

                  https://docs.ansible.com/ansible/2.9/modules/modules_by_category.html
                  https://docs.ansible.com/ansible/2.9/modules/list_of_all_modules.html
                  https://docs.ansible.com/ansible/latest/modules/list_of_all_modules.html
                  https://docs.ansible.com/ansible/latest/modules/modules_by_category.html
                  2.7.1 Command 模块

                  功能:在远程主机执行命令,此为默认模块,可忽略 -m 选项

                  注意:此命令不支持 $VARNAME | ; & 等,可能用shell模块实现

                  注意:此模块不具有幂等性

                  例子:

                  [root@mcb-11-8 ~]#ansible web -a 'hostname'

                  运维自动化之ansible

                  [root@mcb-11-8 ~]#ansible web -a 'ifconfig'

                   

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]