zoukankan      html  css  js  c++  java
  • ansible运维自动化环境搭建

    ansible是开源工具,底层是用python写的

    ansible也有web界面,可以直接鼠标点就可以,但是web界面收费

    所以大部分企业不会用web界面

    AnsibleAnsible的核心程序

    Host Lnventory记录了每一个由Ansible管理的主机信息,信息包括ssh端口,root帐号密码,ip地址等等。可以通过file来加载,可以通过CMDB加载

    PlaybooksYAML格式文件,多个任务定义在一个文件中,使用时可以统一调用,“剧本”用来定义那些主机需要调用那些模块来完成的功能.

    Core ModulesAnsible执行任何管理任务都不是由Ansible自己完成,而是由核心模块完成;Ansible管理主机之前,先调用core Modules中的模块,然后指明管理Host Lnventory中的主机,就可以完成管理主机。

    Custom Modules自定义模块,完成Ansible核心模块无法完成的功能,此模块支持任何语言编写。

    Connection Plugins连接插件,Ansible和Host通信使用

    Ansible的优点:

    • Stupied Simple ,上手简单,学习曲线平滑
    • SSH by default ,安全,无需安装客户端
    • 配置简单、功能强大、扩展性强
    • 支持API及自定义模块,可通过Python轻松扩展
    • 通过Playbooks来定制强大的配置、状态管理
    • 提供一个功能强大、操作性强的Web管理界面和REST API接口——AWX平台
    • 幂等性:同样的操作不会重复执行,只会将改变了的再次执行。

    Ansible的环境搭建:

    需要2+台虚拟机,我是用三台虚拟机为大家讲解;

    一台为ansible端,其余为client,测试使用。

    前提关闭防火墙,在一个网段,可以互相ping通。

    ansible端:

    1.安装扩展软件包源和ansible软件包:

    # yum -y install epel-release

    # yum clean all

    # yum makecache

    # yum -y install ansible

    2.编辑ansible配置文件:(设置无密码登录)

    3.在三台虚拟机上执行创建密钥命令

    # ssh-keygen

    会生成两个文件,公钥和私钥

     

    4.然后将公钥文件拷贝在测试机上并指定路径(路径是规定,就得这么写)

    # scp id_rsa.pub root@192.168.29.138:/root/.ssh/authorized_keys

    测试:ssh连接客户机ip,不需要输入密码就成功!

    # ssh 客户机ip

    # ssh 192.168.29.139

    5.配置文件:/etc/ansible/hosts:记载着需要管理的主机的信息

    添加组:

    [xxxx] ——可以随意命名,但是后期要调用,尽量有象征性的命名;

    192.168.29.137 ——需要管理的客户机的IP(也可以写域名)

    192.168.29.138 ——需要管理的客户机的IP

     

    6.测试:查看管理的两个主机通不通

    # ansible group -m ping

     

    7.ansible的简单命令使用:

    ·ansible-doc -l #查看支持的模块(命令)

    ·ansible-doc -s yum #查看yum模块用法

    ·nsible命令应用基础

    ansible <host-pattern> [options]

          -f forks:启动并发线程数

          -m model_name:要使用的模块

          -a args:特有的参数

    ·查看client端是否正常ping通

    ansible all -m ping

    ·查看客户端信息

    ansible group -m setup

    格式:ansible 组名/all -m 指定模块 -a '操作'

    ·copy服务器的1.sh文件到cient端的指定路径下

    ansible group -m copy -a 'src=/root/1.sh dest=/root/test'

    ·创建test用户

    ansible group -m user -a "name=test state=present" 

    ·删除test用户

    ansible group -m user -a "name=test state=absent"

    ·yum安装

    ansible group -m yum -a 'name=tree state=latest'

    ·停止httpd服务

    ansible group -m service -a 'name=httpd state=stopped enabled=no'

    ·运行脚本

    ansible group -m script -a '/tmp/test.sh'

    ·查看时间,是ansible默认模块,可以不指定模块。

    ansible group -m command -a 'date'

    playbook剧本:

    playbook是运用ansible的一种非常强大的方式,是由多个play组成。

    简单来说,playbooks 是一种简单的配置管理系统与多机器部署系统的基础.与现有的其他系统有不同之处,且非常适合于复杂应用的部署.

    一下范例中的格式必须严格遵守,必须的必。

    例一:基础

     

    例二:变量

    定义变量: vars

    变量名=变量

    调用变量:{{ 变量名 }}

    例三:迭代

    whith_item:要写在当前name的最下面

     

    例四:触发器notify

     

    例五:模板文件templates

    先复制一个httpd.conf文件在主server任意目录下,

    修改配置文件,调用变量,将端口号改为 {{ port }}

     

    修改配置文件:/etc/ansible/hosts,指定两个客户机的端口

    在两个客户端 ss -tnl 查看端口:

    例六:单个任务执行tags

    调用:ansible xxx.yml tags='add_user'

     

    例七:角色roles:代码复用

    mkdir -pv ansible_playbooks/roles/{webservers,dbservers}/{tasks,files,templates,meta,handlers,vars}

     

    拓展:epel源 EPEL 是yum的一个软件源,里面包含了许多基本源里没有的软件了,但在我们在使用epel时是需要安装它才可以了,EPEL,即Extra Packages for Enterprise Linux的简称,是为企业级Linux提供的一组高质量的额外软件包,

    安装之前:yum repolist

    安装后:软件包多了很多

  • 相关阅读:
    正则表达式 1
    14 同步 1
    14 线程属性
    14 线程状态
    14 线程
    window.location.hostname与 window.location.host 区别
    泛型 的通配符类型 extends super
    svn拷贝一个项目作为新项目
    List Collections sort
    && 和 || 逻辑运算符
  • 原文地址:https://www.cnblogs.com/zhangty333/p/13750343.html
Copyright © 2011-2022 走看看