zoukankan      html  css  js  c++  java
  • ansible 基本使用-1

    概述

    ansible  当前主流的批量配置管理工具,相比于saltstack 它是无agent 模式,基于ssh 去远程管理主机。有密码和密钥两种方式远程认证方式。

    安装

    yum -y install  ansible  (前提是有epel 源,如果没有需要安装)

    pip install ansible

    github源码包安装

    环境

    服务端

    python  2.6/2.6.3.x

    openssl

    centos debian redhat

    被管理端

    openssl    python  2.6/2.6.3.x

    ansible  组件

    playbook      #剧本

    inventory      #主机清单
    modules      #功能模块
    plugins        #插件
    api         #接口

    常见的配置

    [defaults]
    
    # some basic default values...
    
    #inventory      = /etc/ansible/hosts                      #默认的主机清单文件
    #forks          = 5                                #并发执行任务数量,默认5#host_key_checking = False                            #是否验证远程主机的指纹信息,如果要禁用验证需要去掉注释
    #sudo_user      = root                           #是否提权,新版本用的是 become = root  
    #timeout = 10                                #ssh 超时时间
    #remote_port    = 22
    #log_path = /var/log/ansible.log                    #日志路径,启用的话,注释去掉
    #private_key_file = /path/to/file                    #密钥登录方式,默认关闭

    inventory 使用配置

    ######## Ex 1: 未分组的主机清单,默认属于all 组,可以使用主机名也可以使用ip 
    
    ## green.example.com
    ## blue.example.com
    ## 192.168.100.1
    ## 192.168.100.10
    
    ######## Ex 2: 根据主机用户分组,例如一下清单主机都属于webservers  
    
    ## [webservers]
    ## alpha.example.org
    ## beta.example.org
    ## 192.168.1.100
    ## 192.168.1.110
    
    # 如果你的主机名字有规律的,可以通过这种方式表示多个主机www.001.example.com  www.002.example.com  ...  
    ## www[001:006].example.com 


    ######## Ex
    3: 数据库组
    ## [dbservers] ##
    ## db01.intranet.mydomain.net
    ## db02.intranet.mydomain.net
    ##
    10.25.1.56 ## 10.25.1.57

     变量的使用

    可以通过给主机或者主机组定义变量,在远程执行命令的时候使用该变量

    vi /etc/ansible/hosts
      ##k8s-node   [node]   10.11.118.164 ansible_ssh_user=root ansible_ssh_pass=asdf http_port=80      #针对主机添加变量   10.11.118.165 ansible_ssh_user=root ansible_ssh_pass=asdf   [node:vars]      #针对主机组添加变量   http_port=6443

      ansible node  -a "echo {{http_port}}"

    tips:主机后面的变量优先级大于主机组中相同变量值

    vi /etc/ansible/group_vars/etcd.yml        #以主机组名字名命的文件内定义变量
      server_name: k8s-etcd                

      ansible etcd  -a "echo {{server_name}}"

    tips: 当两个主机组中的主机有重复,然后两个主机组的变量定义的不同,那么前面第一次生效的变量不会被后面定义的覆盖

    普通用户远程登陆后的提权问题

    使用copy 模块复制文件报错

    "msg": "Destination /usr/local/bin not writable"

    原因:普通用户没有权限写入此目录

    解决:

    vi /etc/ansible/ansible.cfg

    [defaults]
    sudo_user      = root

    [privilege_escalation]
    become=True
    become_method=sudo
    become_user=root

    首次连接目标主机 无秘钥文件的解决方法

    解决方法:

      • A.在Ansible主机中,添加目标主机的指纹文件。
        但这种方法过于繁琐,失去了使用Ansible的目的。

      • B.取消秘钥文件校验
        修改ansible.confg文件(也可能是ansible.cfg)
        host_key_checking = False
        完成首次登陆之后,可再次启用此校验。

  • 相关阅读:
    Sliding Window
    方程的解数
    [JLOI2011]不重复数字
    A−B数对
    2007年分区联赛提高组之一 统计数字
    Magic Squares 魔板 (BFS+HASH)
    集合(normal)
    Place the Robots
    LoadRunner监控Linux
    CentOS6.3(64位)下安装Oracle11gR2(64)服务器
  • 原文地址:https://www.cnblogs.com/fanggege/p/13274878.html
Copyright © 2011-2022 走看看