您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    Ansible剧本的6个排查技巧
    时间:2021-08-07 12:13 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    Ansible剧本的6个排查技巧

    【51CTO.com快译】Ansible是一种功用很弱小的工具,可以跨效劳器、云、网络和容器等更多系统自动化管理各种平台。

    您常常只需重用现有的角色和集合,就可以自动执行想要完成的操作。还有许多模块可供选择,可以在剧本中运用它们。

    但是当您末尾开发和测试更复杂的剧本时,最终需求一些缺点排查办法。比如反省Ansible义务流、确认变量的数据类型,甚至在某个特定点暂停以反省它们的值。

    本文讨论的一些技巧仅适用于经过命令行执行Ansible。其他技巧从Ansible Tower运转时也适用。

    1. 你的Ansible环境和参数

    假设您需求剖析为什么某内容在剧本中没有按预期运转,最好先反省您的Ansible环境。

    您在运转Ansible二进制文件和Python的哪些版本和途径?

    假设您添加了剧本所需的操作系统包或Python模块,Ansible解释器会“看到”它们吗?

    可以经过多种不同的方式获取这些基本信息。从命令行运转ansible --version命令。

    > ansible --version 

     

    ansible 2.9.10 

     

      config file = /etc/ansible/ansible.cfg 

      configured module search path = ['/home/admin/.ansible/plugins/modules''/usr/share/ansible/plugins/modules'

      

     ansible python module location = /usr/lib/python3.6/site-packages/ansible 

      executable location = /usr/bin/ansible 

      python version = 3.6.8 (default, Mar 18 2021, 08:58:41) [GCC 8.4.1 20200928 (Red Hat 8.4.1-1)] 

    可以经过运转其他Ansible命令来获取异样的信息,比如运用--version选项的ansible-playbook或ansible-config。

    在Ansible Tower中,假设运用VERBOSITY 2(更详细)或更高版本执行作业模板,可显示该信息。

    除了Ansible和Python二进制文件的版本和位置之外,细心反省用于模块的途径总是坏事,包括执行能否运用了不是默许的ansible.cfg文件(即不是/etc/ansible /ansible.cfg)。

    要调查来自自定义ansible.cfg文件的选项,可以从命令行执行以下操作:

    > ansible-config dump --only-changed 

    DEFAULT_BECOME(/home/admin/ansible/ansible.cfg) = True 

    DEFAULT_BECOME_USER(/home/admin/ansible/ansible.cfg) = root 

    DEFAULT_FORKS(/home/admin/ansible/ansible.cfg) = 10 

    DEFAULT_HOST_LIST(/home/admin/ansible/ansible.cfg) = ['/home/admin/ansible/inventory'

    DEFAULT_ROLES_PATH(/home/admin/ansible/ansible.cfg) = ['/home/admin/ansible/roles'

    HOST_KEY_CHECKING(/home/admin/ansible/ansible.cfg) = False 

    望文生义,这将列出与默许参数不同的参数。

    2. 以详细形式运转

    下一步是在调试形式下运转剧本,以获取有关义务和变量中所发作状况的更多详细信息。

    您可以从命令行添加-v(或-vv、-vvv、-vvvv、-vvvvv)。最高的详细级别有时能够含有太多信息,因此最好在屡次执行中逐渐添加详细级别,直至取得所需信息。

    排查衔接成绩时级别4有所协助,级别5适用于排查WinRM成绩。

    在Tower中,您可以从作业模板定义中选择VERBOSITY级别。

    留意:记得在处置成绩后禁用调试形式,由于详细信息仅对排查缺点有用。

    此外,在调试形式下,除非您在义务中运用no_log选项,否则会显示某些变量(比如密码)的值,因此完成后删除输入。

    3.运用调试来显示变量

    假设您很清楚成绩能够出在哪里,可以运用更精准的办法:仅显示您需求查看的变量。

     (...) 

      - name: Display the value of the counter 

         debug: 

          msg: "Counter={{ counter }} / Data type={{ counter | type_debug }}" 

    (...) 

    TASK [Display the value of the counter]  

    *************************************************************************** 

    ok: [node1] => { 

        "msg""Counter=42 / Data type=AnsibleUnicode" 

    这就是为什么我无法加大计数。过滤器type_debug显示,数据类型是text,而不是我以为的int。

    4. 确保变量有适宜的内容和数据类型

    可以运用assert模块来确认:变量有预期的内容/类型,假设出了岔子,就促使义务失败。

    下列剧本表明了这点:

    --- 

    name: Assert examples 

      hosts: node1 

      gather_facts: no 

      vars: 

        var01: 13 

      tasks: 

      - debug: 

          msg: "Parameter 01 is {{ (param01 | type_debug) }}" 

    (责任编辑:admin)