• Ansible 模式


    一、Ansible 命令

    1、Ansible 命令执行的方式有两种:Ad-Hoc、Ansible-playbooks,这两种方式没有本质的区别,Ad-Hoc用于临时执行命令;Ansible-playbooks可以理解为Ad-Hoc的集合,通过一定的规则编排在一起,也就是剧本。

    2、Ansible通讯机制是ssh,有秘密和秘钥验证,一般来说都是配置秘钥验证。秘钥配置使用ssh-keygen。

    3、使用命令格式:

      ansible  <host-pattent> [options]

    解释:

    ansible     Ansible命令

    <host-pattern>是Inventory中定义的主机名、IP、group组名、具有 "." 或  "*" 或 ":"等特殊字符的匹配型字符串。<>表示该选项是必须。

    [options]是Ansible的参数选项,可选参数。

    常用选项如下:

    -m  NAME,--module-name=NAME:指定执行使用的模块(ansible的功能都是基于模块化的)。

    -u USERNAME,--user=USERNAME:指定远程主机以USERNAME执行。

    -s,--sudo:远程执行命令时使用sudo方式,相当于Linux系统下的sudo命令。

    -U  SUDO_USERNAME,--sudo-user=SUDO_USERNAME:sudo 用户

    注意:上述的-s和-U选项在新版中已经失效。新版本选项如下两项:

    -s,--sudo 被改成 -b,--become

    -U,--sudo-user被改成  --become-user

    -K, --ask-become-pass:使用--become或者--become-user时使用的密码认证。

    -f FORKS, --forks=FORKS:并行线程数量。

    -k, --ask-pass:连接到远程主机的密码,当没有使用免密认证时使用

    eg:

    1、---测试 -m -u选项;-m指定 ping模块,以yjt用户执行ping存活检测。如果不指定用户,在远程机器上默认是以root用户执行。
    [root@manager1 ~ 15:53:53]#ansible 192.168.4.46 -m ping -u yjt ---注意,ip需要在/etc/ansible/hosts提前里面配置,如果想在多个主机测试,这里可以改成all,当然,前提是需要在hosts文件配置好。 192.168.4.46 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" }
    提示SUCCESS就表示成功了。

    2、测试 -b;以yjt用户sudo到root执行ping存活检测。这种方式需要在远程主机的/etc/sudoers文件中配置yjt用户,如果没有配置NOPASSWD,则需要加上-K选项。
    远程主机/etc/sudoers文件添加如下:
    yjt  ALL=(root)NOPASSWD:   ALL

    [root@manager1 ~ 16:26:00]#ansible 192.168.4.46 -m ping -u yjt -b
    192.168.4.46 | SUCCESS => {
    "ansible_facts": {
    "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
    }

    把上诉的yjt  ALL=(root)NOPASSWD:   ALL换成yjt  ALL=(root)   ALL,再次执行

    [root@manager1 ~ 16:37:19]#ansible 192.168.4.46 -m ping -u yjt -b
    192.168.4.46 | FAILED! => {
    "ansible_facts": {
    "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "module_stderr": "Shared connection to 192.168.4.46 closed. ",
    "module_stdout": "sudo: a password is required ",
    "msg": "MODULE FAILURE See stdout/stderr for the exact error",
    "rc": 1
    }

    发现报错了,这个时候由于远程机器的yjt用户不能免密登录到root用户,所以,执行方式改成如下,加-K(大写)选项

    
    

    [root@manager1 ~ 16:30:34]#ansible 192.168.4.46 -m ping -u yjt -b -K
    BECOME password:     ---输入yjt用户的密码。
    192.168.4.46 | SUCCESS => {
    "ansible_facts": {
    "discovered_interpreter_python": "/usr/bin/python"
    },
    "changed": false,
    "ping": "pong"
    }



    二、ansible-galaxy

    用于从ansible  galaxy官网上传下载roles。

    命令用法:

    ansible-galaxy [delete|import|info|init|install|list|login|remove|search|setup] [--help] [options]

    init:用于初始化本地的roles,以备上传至galaxy。

    info:指定roles的详细信息。

    install:下载roles到本地。

    list:列出本地已经存在的roles。

    remove:删除本地已经存在的roles。

    eg:下载nginx的roles,默认存放在/etc/ansible/roles

    [root@manager1 kvm 17:19:05]#ansible-galaxy --ignore-errors install azavea.git
    - downloading role 'git', owned by azavea
    - downloading role from https://github.com/azavea/ansible-git/archive/0.1.0.tar.gz
    - extracting azavea.git to /root/.ansible/roles/azavea.git    ---这里存放在了这个目录下。
    - azavea.git (0.1.0) was installed successfully

    三、ansible-pull
    远端拉取命令或者剧本,效率无限提升,对运维要求较高
    该指令的使用涉及Ansible的另一种工作模式:pull模式(Ansible默认使用push模式)。这和通常使用的push模式工作机理刚好相反,其适用于以下场景:
    1、你有数量巨大的机器需要配置,即使使用高并发线程依旧要花费很多时间;2、你要在刚启动的、没有网络连接的主机上运行Anisble
    Usage: ansible-pull -U <repository> [options] [<playbook.yml>]
    例: */20 * * * * root /usr/local/bin/ansible-pull -o -C 2.1.0 -d /srv/www/king-gw/ -i /etc/ansible/hosts -U git:// git.kingifa.com/king-gw-ansiblepull >> /var/log/ansible-pull.log 2>&1
    它是通过通过ansible-pull结合Git和crontab一并实现,其原理如下:通过crontab定期拉取指定的Git版本到本地,并以指定模式自动运行预先制订好的指令
    注:ansible-pull通常在配置大批量机器的场景下会使用,灵活性稍有欠缺,但效率几乎可以无限提升,对运维人员的技术水平和前瞻性规划有较高要求

  • 相关阅读:
    scoket --- 练习
    网络编程---scoket使用,七层协议,三次挥手建连接,四次挥手断连接
    类的总复习
    面向对象 --- 类的绑定方法,面向对象高阶
    组合,访问限制机制,抽象类 --- 练习
    面向对象 --- 类的组合,封装,多态
    类的继承 --- 练习
    面向对象 --- 类的继承
    基于面向对象设计一个游戏
    请求头类型content-type
  • 原文地址:https://www.cnblogs.com/yjt1993/p/10956805.html
Copyright © 2020-2023  润新知