zoukankan      html  css  js  c++  java
  • 自动化工具Ansible的使用操作

    Ansible是通过SSH协议实现对远程服务器进行自动化,集中化的配置管理、应用部署等,结合Jenkins来实现自动化部署,今天重新在新的机器上部署k8s,用到Ansible,so记录一下

    相比于SaltStack,Fabric,Puppet等自动化工具,我这里选择Ansible的原因是轻巧便捷易操作更方便简化工时,其他的自动化工具以后在用到在记录

    Ansible的官方文档:https://ansible-tran.readthedocs.io/en/latest/index.html

    一、Ansible部署

    1.1 环境及安装

    我这里的部署环境为三台子节点一台主节点

    • 192.168.1.128 主
    • 192.168.1.129 子
    • 192.168.1.130 子
    • 192.168.1.131 子
    • 操作系统:CentOS Linux release 8.3.2011

    在主节点进行安装Ansible,用于管理子节点服务器

    yum install ansible -y 
    

    由于是新机器,我这里出现Error: Unable to find a match: ansible,是因为新机器没有配置 yum 源,那么我们这里安装 EPEL 源

    [root@192 ~]# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
    

    完成以上我们即可安装Ansible

    1.2 Ansible配置

    接下来进行修改Ansible要管理的子节点服务器,我们进入Ansible的目录看一下都有什么

    • ansible.cfg:Ansible的配置文件

    • hosts:服务器子节点信息

    这里我们用到hosts这个文件

    [root@tool-server ~]# vim /etc/ansible/hosts
    

    添加一下你的服务器信息,[]里为组的名称,管理的时候执行组名即可

    接下来生成一下shh私钥复制到子节点上,以实现ssh免密访问,ssh免密在之前的ambari大数据文章中详细介绍过,这里再简单说一下

    [root@192 ansible]# ssh-keygen
    

    让你选择存放位置和秘钥信息,一路回车即可,接下来进行复制,输入yes以及子节点服务器的密码即可完成免密访问

    [root@192 ansible]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.128
    [root@192 ansible]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.129
    [root@192 ansible]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.130
    [root@192 ansible]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.1.131
    
    

    1.3 测试Ansible

    测试Ansible个节点是否连接通

    [root@192 ~]# ansible k8s -m ping
    

    可以看到连接到子节点完全没问题

    二、Ansible使用

    2.1 Ansible命令

    通过上面测试的ping命令我们可以知道执行Ansible的命令格式为:ansible [组名] -m "模块名" -a "需要执行的操作"

    #查看所有模块
    ansible-doc -l   
    # 查看某个模块详情      
    ansible-doc -s fetch   
    
    

    常用Ansible命令模块:

    # 执行命令                            
    command                                  
    # 执行shell		 
    shell                        			 
    # 远程执行本地脚本            			 
    script                       			 
    # 获取主机的基本信息                       
    setup                                  
    # 文件操作,创建、删除、修改                              
    file                                 
    # 拷贝文件                              
    copy                                
    # 查找文件                              
    find                                  
    # 替换文件中的字符串                              
    replace                                  
    # 操作文件中的一段文本                              
    blockinfile                                 
    # 操作某行中的一段文本                               
    lineinfile                               
    # 管理用户                                 
    user                                  
    # 管理组                              
    group                                 
    # 管理yum仓库                               
    yum_repository                               
    # 通过yum管理软件包                                 
    yum                               
    # 管理定时任务                                 
    cron                                  
    # 管理主机服务                              
    service         
    

    2.2 playbook

    playbook是ansible实现配置、部署、编排的载体,是一个YAML格式的文本文件,主机通过编写playbook来实现业务逻辑,其中每一个task就是调用Ansible的一个命令模块

    ansible playbook官方文档参考:http://www.ansible.com.cn/docs/playbooks_intro.html#about-playbooks

    playbook操作命令

    # 执行playbook
    ansible-playbook test.yml                        
    
    ansible-playbook --syntax-check test.yml        # 检查playbook中yaml语法
    

    playbook的yml结构,这里以apache为例

    ---
    - hosts: k8s                                      # 主机列表,可以是主机分组名,可以是ip地址
      vars:
        http_port: 80
        max_clients: 200
      remote_user: root
      tasks:
      - name: ensure apache is at the latest version  # 定义任务的名称
        yum: pkg=httpd state=latest                   # yum任务安装调用的必要的依赖
      - name: write the apache config file
        template: src=/srv/httpd.j2 dest=/etc/httpd.conf
        notify:
        - restart apache                              # 结束时触发操作,通过handlers来定义
      - name: ensure apache is running                # 定义任务的名称
        service: name=httpd state=started
      handlers:# 与notify定义的内容对应
        - name: restart apache
          service: name=httpd state=restarted
    

    *[·-·]:

    *[·-·]:

    *[·-·]:

    playbook的条件选择when以及Roles,这里暂时参考官方文档http://www.ansible.com.cn/docs/playbooks_conditionals.html

    之后有改动会继续更新

  • 相关阅读:
    CentOS7下Elastic Stack 5.0日志分析系统搭建
    ElasticSearch 简单入门
    简单使用packetbeat
    centos7没有安装ifconfig命令的解决方法
    CentOS系统下docker的安装与卸载
    centos7 cannot find a valid baseurl for repo base
    HP P2xxx/MSA SMI-S Provider
    Zookeeper 的学习与运用
    kafka入门:简介、使用场景、设计原理、主要配置及集群搭建(转)
    利用开源架构ELK构建分布式日志系统
  • 原文地址:https://www.cnblogs.com/shook/p/14705322.html
Copyright © 2011-2022 走看看