zoukankan      html  css  js  c++  java
  • ansible安装配置及基本用法

    ansiblle具有如下特点:
    1、部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作;
    2、默认使用SSH协议对设备进行管理;
    3、主从集中化管理;
    4、配置简单、功能强大、扩展性强;
    5、支持API及自定义模块,可通过Python轻松扩展;
    6、通过Playbooks来定制强大的配置、状态管理
    7、对云计算平台、大数据都有很好的支持;redis配置文件:这样写可以获取到客户机的ipv4地址,bind {{ ansible_default_ipv4.address }}
    

    1 安装ansible
          Ansible仓库默认不在yum仓库中,因此我们需要使用下面的命令启用epel仓库。
           yum install epel-release -y
           yum install ansible -y
    2.  ansible命令参数
            anisble命令语法: ansible [-i 主机文件] [-f 批次] [组名] [-m 模块名称] [-a 模块参数]
            ansible详细参数:
             -v,–verbose   #  详细模式,如果命令执行成功,输出详细的结果 (-vv –vvv -vvvv)
             -i PATH, -inventory=PATH      #  指定 host 文件的路径,默认是在 /etc/ansible/hosts 
    inventory  [ˈɪnvəntri]  库存
             -f NUM,-forks=NUM     # NUM 是指定一个整数,默认是 5 ,指定 fork 开启同步进程的个数。
             -m NAME,-module-name=NAME    #   指定使用的 module 名称,默认使用 command模块
            -a,MODULE_ARGS   #指定 module 模块的参数
             -k,-ask-pass           #提示输入 ssh 的密码,而不是使用基于 ssh 的密钥认证
             -sudo          # 指定使用 sudo 获得 root 权限
             -K,-ask-sudo-pass             #提示输入 sudo 密码,与 -sudo 一起使用
             -u USERNAME,-user=USERNAME          # 指定移动端的执行用户
             -C,–check             #测试此命令执行会改变什么内容,不会真正的去执行
     3. 生成密钥
         ssh-keygen默认就行
         使用ssh-copy-id命令来复制Ansible公钥到节点  
         ssh-copy-id  root@节点ip
    

      

    43. 定义主机清单
              1、基于端口,用户,密码定义主机清单
                    ansible基于ssh连接-i (inventory)参数后指定的远程主机时,也可以写端口,用户,密码。
                    格式:ansible_ssh_port:指定ssh端口   ansible_ssh_user:指定 ssh 用户 ansible_ssh_pass:指定 ssh 用户登录是认证密码(明文密码不安
    全) ansible_sudo_pass:指明 sudo 时候的密码 vim /etc/ansible/hosts #文件 /etc/ansible/hosts 维护着Ansible中服务器的清单。在文件最后追加以下内容 [web-servers] ansible服务器ip ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=123456 [web-server] 节点ip

      

    5.  测试主机连通性
             ansible -i /etc/ansible/hosts web-servers -m ping  
             -i    #  指定 host 文件的路径,默认是在 /etc/ansible/hosts 
             -m    #   指定使用的ping模块
              报错:
              192.168.1.63 | FAILED! => {
        "msg": "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this.  Please add this host's fingerprint to your known_hosts file to manage this host."
    }
    
               ssh root@192.168.1.63   #手动连接一下/etc/ansible/hosts主机清单中的主机,这样就可以在ansible服务器上保存目标主机的fingerprint指纹。再连接试试,如果不行,修改配置文件ansible.cfg,将host_key_checking = False打开就OK了。
          
    

    5.1 获取节点服务器运行时间
          ansible -m command -a "uptime" web-servers
          ansible -i hosts web-servers -m command -a "uptime" 
    

    5.2  给节点增加用户
            ansible -i hosts web-servers -m command -a "useradd xiaoxiao"
    

    5.3  scripts模块
           使用scripts模块可以在本地写一个脚本,在远程服务器上执行
           copy模块
           实现主控端向目标主机拷贝文件,类似scp功能
           ansible -i /etc/ansible/hosts web-servers -m copy -a "src=/ai.sh dest=/tmp owner=liutao group=liutao mode=755"
            相当于scp文件,可以定义拥有者,组以及权限。
    

    5.4  获取远程文件信息
                stat模块
               ansible -i hosts web-servers -m stat -a "path=/tmp/ai.sh"
    

    5.5 get_url模块实现远程主机下载指定url到本地
              ansible -i /etc/ansible/hosts web-servers -m get_url -a "url=https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm  dest=/tmp/ mode=0440 force=yes"
               注:url=https://xxx  的等号=前后不能有空格  
                  如果force=yes,当下载文件时,如果所下的内容和原目录下的文件内容不一样,则替换原文件,如果一样,就不下载了。
              如果为“否”,则仅在目标不存在时才下载文件。 一般来说,只有小型本地文件才应该为“是”。 在0.6之前,该模块表现为默认为“是”
    
    5.6  yum模块linux平台软件包管理。
               yum模块可以提供的status状态: latest ,present,installed  #这3个代表安装;removed, absent #后面2个是卸载
               安装http,mysql软件
               ansible -i /etc/ansible/hosts web-servers -m yum -a "name=httpd  state=latest"
    5.7   cron模块:执行定时任务
               ansible -i /etc/ansible/hosts web-servers -m cron -a "name='mkdir' minute=5 hour=02 day=15 month=8 weekday=3 job='mkdir /tmp/a.txt'"
              minute hour day month weekday   分  时  日   月  周
    
    5.8  service模块   远程主机系统服务管理
           name参数:此参数用于指定需要操作的服务名称,比如 nginx,httpd。 
           state参数:此参数用于指定服务的状态,比如,我们想要启动远程主机中的httpd,则可以将 state 的值设置为 started;如果想要停止远程主机中的服务,则可以将 state 的值设置为 stopped。此参数的可用值有 started、stopped、restarted(重启)、reloaded。 
    enabled参数:此参数用于指定是否将服务设置为开机 启动项,设置为 yes 表示将对应服务设置为开机启动,设置为 no 表示不会开机启动。
            注:想使用service模块启动服务,被启动的服务,必须可以使用service 命令启动或关闭     reloaded, restarted, started, stopped   平滑重启,重启,启动,关闭
            enabled=yes开机自启动,no开机不启动
            ansible -i /etc/ansible/hosts web-servers -m service -a "name=httpd state=started"
             ansible -i /etc/ansible/hosts web-servers -m service -a "name=httpd enabled=yes"   
       
    
    5.9  sysctl模块远程主机sysctl配置。
                开启路由转发功能
                ansible -i /etc/ansible/hosts web-servers -m sysctl -a "name=net.ipv4.ip_forward value=1 reload=yes"
           
            user模块远程主机用户管理
                  ansible -i hosts web-servers -m user -a "name=xxx state=present"
                  state参数state=absent(删除用户,不删除家目录)  默认是present(创建用户)
    state=absent remove=yes(删除用户同事删除家目录,用户不存在不操作)
  • 相关阅读:
    Spring-----<context:annotation-config/>
    Spring-----代码中使用注入的Properties配置属性
    Spring-----事务配置的五种方式
    读书汇总贴
    读书_2019年
    有道词典_每日一句_2019/08
    微信小程序 报错Failed to load image
    有道词典_每日一句_2019/07
    微信小程序 base64格式图片的显示及保存
    Mac版微信无法安装之始末
  • 原文地址:https://www.cnblogs.com/The-day-of-the-wind/p/9605938.html
Copyright © 2011-2022 走看看