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

    安装后:软件包多了很多

  • 相关阅读:
    228. Summary Ranges
    227. Basic Calculator II
    224. Basic Calculator
    222. Count Complete Tree Nodes
    223. Rectangle Area
    221. Maximal Square
    220. Contains Duplicate III
    219. Contains Duplicate II
    217. Contains Duplicate
    Java编程思想 4th 第4章 控制执行流程
  • 原文地址:https://www.cnblogs.com/zhangty333/p/13750343.html
Copyright © 2011-2022 走看看