• Ansible介绍与安装


    Ansible简介

    Ansible是一个IT自动化配置工具。它能备注系统、部署软件、编排更复杂的IT任务,如连续部署或零停机时间滚动更新。

    Ansible特性

    • Agentless:不需要在被管理节点上安装插件,只需要有sshd和python即可
    • Serverless:在服务端不需要启动任何服务,只需要执行命令就行
    • Module in any language:基于模块工作,可以使用任意语言开发ansible模块
    • YAML,not code:使用yaml语言定制playbook
    • SSH by default:默认使用ssh控制各节点

    Ansible基本组件

    • 核心模块(Core Modules):这些都是ansible自带的模块
    • 扩展模块(Costome Modules):如果核心模块不足以完成某些功能,可以添加扩展模块
    • 插件(Plugins):完成模块功能的补充,比如执行完了发个邮件,记录日志等等
    • 主机组(Host Inventory):可以选择只在哪些主机上执行playbook
    • 剧本(Playbooks):剧本,运行的指令

    ansible安装

    环境信息

    角色 IP地址
    ansible主控端 192.168.10.130
    ansible被控端 192.168.10.131
    1. 权限委派
      生产环境下,一般不建议使用root来执行playbook,因为权限太大,万一playbook写错,会导致不可挽回的结果

    ALL=(ALL)代表可以在所有机器上变换所有身份执行

    vim /etc/sudoers
    
    admin   ALL=(ALL)       NOPASSWD: /usr/sbin/useradd, /usr/bin/ls
    
    1. 关闭防火墙与SELinux
    systemctl stop firewalld
    systemctl disable firewalld
    setenforce 0
    sed -ri '/^[^#]*SELINUX=/s#=.+$#=disabled#' /etc/selinux/config
    
    1. 免密登录
      打通ansible主控端到被控端的admin用户免密登录
    ssh-keygen
    #连续三次回车
    
    ssh-copy-id -i /home/admin/.ssh/id_rsa.pub root@192.168.10.131
    #由于秘钥名称和存储路径都是默认的,所以也可以用如下简写命令代替
    ssh-copy-id 192.168.10.131
    
    1. hosts文件拷贝
    # 在主控端hosts里写好所有节点的ip到主机名的映射,然后分发给所有节点
    vim /etc/hosts
    scp /etc/hosts root@node2:/etc/
    
    1. 使用yum安装ansible
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    
    yum -y install ansible
    ansible --version
    

    ansible配置文件

    配置文件优先级

    ansible的配置文件名为ansible.cfg,它一般会存在于四个地方,优先级按顺序排列:

    1. ANSIBLE_CONFIG:首先,Ansible命令会检查该环境变量,及这个环境变量将指向的配置文件

    2. ./ansible.cfg:当前工作目录,即当前执行ansible指令的目录,如果ANSIBEL_CONFIG环境变量未定义,则优先使用该配置文件

    3. ~/.ansible.cfg:当前用户家目录下的一个隐藏文件,如果当前工作目录下不存在ansible.cfg配置文件,则会查找用户家目录下的该隐藏文件

    4. /etc/ansible/ansible.cfg:默认配置文件,如果上面两个路径下的ansible.cfg都不存在,则使用该文件

    配置文件详解

    vim /etc/ansible/ansible.cfg
    #全局配置
    [defaults]
    
    #Ansible需要连接管理的主机列表hosts文件路径,默认/etc/ansible/hosts
    inventory = /etc/ansible/hosts
    #ansible role存放路径,默认/etc/ansible/roles
    roles_path = /etc/ansible/roles
    #Ansible日志路径,默认/var/log/ansible.log
    log_path = /var/log/ansible.log
    
    
    #SSH连接超时时间,默认10s
    timeout = 10
    #ansible第一次连接客户端是是否要检查ssh密钥
    host_key_checking = False
    
    
    #ansible执行并发数,默认5
    forks = 5
    #异步执行任务时查询间隔,默认15s
    poll_interval = 15
    #执行ansible命令时使用的用户,默认root
    sudo_user = root
    #远程主机SSH端口,默认22
    remote_port = 22
    #ansible执行playbook时远程认证用户,默认root
    remote_user = root
    
    
    #Ansible搜寻模块的位置,默认/usr/share/my_modules/
    library = /usr/share/my_modules/
    module_utils = /usr/share/my_module_utils/
    
    
    #ansible模块运行语言环境,默认C
    module_lang = C
    module_set_locale = False
    #ansible使用模块,默认command
    module_name=command
    
    #提权
    [privilege_escalation]
    #打开提权
    become=True
    #提权命令
    become_method=sudo
    #提取为谁的权限
    become_user=root
    #是否检查提权密码
    become_ask_pass=False
    
    vim /etc/ansible/hosts
    [webservers]
    192.168.7.1
    192.168.7.2
    
    [prod]
    192.168.7.1
    192.168.7.3
    
    #定义一个prod和webservers的子组,使用it会调用子组,children是固定写法
    [it:children]
    prod
    webservers
    
    WilliamZheng©版权所有 转载请注明出处! 运维架构师群:833329925
  • 相关阅读:
    emacs 集成astyle
    git reflog
    rpm 打包的时候 不进行strip
    gmock
    如何对正在运行的进程,进行heap profile
    linux性能压测工具
    默认宏定义
    gdb fabs错误输出
    基于Clang的缓存型C++编译器Zapcc
    grep 多行 正则匹配
  • 原文地址:https://www.cnblogs.com/williamzheng/p/14760246.html
Copyright © 2020-2023  润新知