美文网首页新方向脚本命令
运维自动化,你必须掌握ansible如何部署,附ansible技

运维自动化,你必须掌握ansible如何部署,附ansible技

作者: 程序员面试吧 | 来源:发表于2020-08-05 14:24 被阅读0次

    ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
    ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
    (1) 连接插件connection plugins:负责和被监控端实现通信;
    (2) host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
    (3) 各种模块核心模块、command模块、自定义模块;
    (4) 借助于插件完成记录日志邮件等功能;playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。


    #如何部署ansible ?

    1.准备如表-1所示的实验环境,操作系统为RHEL8,配置主机名称、IP地址、YUM源。

    ansible原理:
    控制端主机自带很多模块(模块就是脚本);
    ansible通过ssh远程被管理主机,将控制端的模块(脚本)或命令传输到被管理主机;
    在被管理端主机执行模块(脚本)或命令,执行不同的模块或命令可以实现不同的功能;
    最后ansible退出ssh远程。
    绝大多数模块(脚本)都需要参数才能执行成功!!!类似于shell脚本的位置变量!
    拓扑结构如图-1所示。


    2.步骤一:准备基础环境

    控制节点要求:
    · 域名解析(为了方便后期操作,可以不做)
    · 配置SSH密钥(ansible是基于ssh实现远程控制)
    · 安装Ansible软件

    1)Control控制节点

    修改/etc/hosts,在文件中手动添加如下内容,修改该文件的目的是做域名解析。
    1. [root@control ~]# vim  /etc/hosts        #修改文件,手动添加如下内容(不要删除文件原来的内容)
    2. 192.168.4.253    control    
    3. 192.168.4.11        node1    
    4. 192.168.4.12        node2    
    5. 192.168.4.13        node3    
    6. 192.168.4.14        node4    
    7. 192.168.4.15        node5
    

    如何验证?

    [root@control ~]# ping  node1   #可以使用ping命令依次ping所有域名
    

    配置SSH密钥实现免密码登录(非常重要)
    Ansible是基于SSH远程的原理实现远程控制,如果控制端主机无法免密登录被管理端主机,后续的所有试验都会失败!!

    1. [root@control ~]#  ssh-keygen  -f  /root/.ssh/id_rsa   -N  ''       #生成ssh密钥
    2. #-f指定密钥文件存放在哪个目录,文件叫什么名字,-N ''设置密钥的密码为空
    3. [root@control ~]#  for i in node1 node2 node3 node4 node5
    4. do
    5. ssh-copy-id   $i
    6. done
    7. #拷贝密钥到远程主机
    8. #提示:拷贝密钥到远程主机时需要输入对方电脑的账户密码才可以!!
    9. #拷贝密钥到node1就需要输入node1对应账户的密码,拷贝密钥到node2就需要输入node2对应的密码
    

    如何验证?

    警告:如果有任何一台主机远程还需要密码,就不要往下继续操作,后面实验都会失败!!!

    [root@control ~]# ssh  node1            #使用ssh命令依次远程
    

    所有主机都可以免密码登录

    1. 部署Ansible软件(仅Control主机操作,软件包在ansible_soft目录)。
    1. [root@control ~]# tar -xf   ansible_soft.tar.gz
    2. [root@control ~]# cd ansible_soft
    3. [root@control ansible_soft]# dnf  -y  install   *
    

    被控制节点要求:
    · Ansible默认通过SSH协议管理机器
    · 被管理主机要开启SSH服务,并允许控制主机登录
    · 被管理主机需要安装有Python

    步骤二:修改配置文件

    主配置文件说明:
    主配置文件ansible.cfg(主配置文件的内容可以参考/etc/ansible/ansible.cfg)
    ansible配置文件查找顺序
    首先检测ANSIBLE_CONFIG变量定义的配置文件(默认没有这个变量)
    其次检查当前目录下的./ansible.cfg文件
    再次检查当前用户家目录下~/ansible.cfg文件
    最后检查/etc/ansible/ansible.cfg文件

    1. 修改主配置文件
    1. [root@control ~]# mkdir  ~/ansible
    2. [root@control ~]# vim  ~/ansible/ansible.cfg
    3. [defaults]
    4. inventory = ~/ansible/inventory            
    5. #主机清单配置文件(inventory可以是任意文件名),英语词汇:inventory(清单、财产清单)
    6. #forks = 5                                    #ssh并发数量
    7. #ask_pass = True                             #使用密钥还是密码远程,True代表使用密码
    8. #host_key_checking = False                  #是否校验密钥(第一次ssh时是否提示yes/no)
    

    2) 修改主机清单文件(清单文件名必须与主配置文件inventory定义的一致)

    
    1. [root@control ~]# vim  ~/ansible/inventory
    2. [test]                    #定义主机组(组名称任意)
    3. node1                    #定义组中的具体主机,组中包括一台主机node1
    4. [proxy]                    #定义主机组(组名称任意),英语词汇:proxy(代理人,委托人)
    5. node2                      #proxy组中包括一台主机node2
    6. [webserver]
    7. node[3:4]                 #这里的node[3:4]等同于node3和node4
    8. [database]
    9. node5
    10. [cluster:children]        #嵌套组(children为关键字),不需要也可以不创建嵌套组
    11. webserver                  #嵌套组可以在组中包含其他组
    12. database
    

    #ansible有哪些必须掌握的技能?

    在线部署教程

    请参考:http://image.qbangmang.com/counselor.html

    更多文章和资料|点击下方文字直达 ↓↓↓
    阿里云K8s实战手册
    [阿里云CDN排坑指南]CDN
    ECS运维指南
    DevOps实践手册
    Hadoop大数据实战手册
    Knative云原生应用开发指南
    OSS 运维实战手册

    相关文章

      网友评论

        本文标题:运维自动化,你必须掌握ansible如何部署,附ansible技

        本文链接:https://www.haomeiwen.com/subject/spanrktx.html