Ansible入门(一)

栏目: 服务器 · 发布时间: 5年前

内容简介:Ansible的hosts文件在/etc/ansible目录下,在hosts中添加你需要管理的远程主机的信息后,ansible才可以顺利的管理这些机器。添加一台机器:添加一个机器组:

Ansible的hosts文件在/etc/ansible目录下,在hosts中添加你需要管理的远程主机的信息后,ansible才可以顺利的管理这些机器。

添加一台机器:

[host1]
192.168.1.104
复制代码

添加一个机器组:

[host2]
192.168.1.101
192.168.3.44
192.168.5.201
复制代码

添加一台带参数的机器:

[host3]
192.168.5.67 ansible_sudo_pass='123'
复制代码

修改ansible.cfg

ansible.cfg是Ansible的配置文件,保存在/etc/ansible目录下。如果需要使用become进行权限切换,或者生成日志等功能,就需要修改ansible.cfg中的设置。

设置切换用户时询问密码:

[privilege_escalation]
#become=True
#become_method=sudo
#become_user=root
become_ask_pass=True
复制代码

设置生成日志:

log_path = /etc/ansible/log/ansible.log
复制代码

编写Ansible-playbook

Playbook是yaml格式文件。

---
- name: say 'hello world'
  hosts: host1                      #要执行playbook的机器或机器组,在hosts文件中设置
  tasks:
    - name: echo 'hello world'      #Task的名称
    command: echo 'hello world'     #Task执行的Module,除command外还可以是shell,copy,apt等
    register: result                

    - name: print stdout
    debug:
      msg: ""
复制代码

显示playbook中命令结果

ansible-playbook默认不显示执行的输出,如果需要获取命令执行的结果,可以使用以下方法。

方法一:

ansible-playbook -v test.yaml
复制代码

使用"-v"参数使playbook输出全部的运行结果,但这样输出会非常多,格式也比较乱。

方法二:

tasks:
-name: test 
 shell: echo "just test"
 register: test_output

-name: show output
 debug: var=test_output.stdout verbosity=0
复制代码

使用register将命令的输出结果保存为变量,然后使用debug module将变量输出。这种方法可以方便的获取命令的运行结果。

使用become切换用户

在使用become可以在playbook切换用户来执行命令。比如需要在root下执行某一个命令,就可以使用become功能。

tasks:
-name: change to root user
 become: yes
 become_user: root
 become_method: sudo
 shell: echo "test"
复制代码

关于become有几个注意事项:

  • 如果become的某个选项没有配置的话,会使用ansible.cfg中的设置。比如默认become_user是test,那么在不指定become_user,但是become: yes的话,会默认切换到test用户。
  • 在ansible.cfg中将become_ask_pass设置为True,这样在执行playbook前需要输入要切换的用户的密码。比如要切换到root用户,就需要输入root用户的密码。如果不这样设置,会切换不成功导致执行失败,且失败信息是等待超时。
  • 在become完成后必须要有操作module,也就是说不能只执行become,否则会报错“ERROR! no action detected in task”
  • 切换只在这一个Task中生效,下一个Task也需要切换用户执行的话,需要重新执行become操作

使用Ansible与Slack交互

首先需要去slack中申请一个App,然后记下生成的token。在yaml文件中只需要加入下面一段代码就可以向slack发送信息。

- name: send notification to slack
    slack:
        token: 'AAAAAA/BBBBBBB/CCCCCCCC'    #申请的App的token
        msg: 'just test'
        username: 'test_user'
    delegate_to: localhost                  #指派给localhost执行这段代码
复制代码

delegate_to可以将一个task分配给特定的主机执行,通过delegate_to可以在一个playbook让不同的机器执行不同的task。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

突破之道

突破之道

(美)基思 R. 麦克法兰(Keith R. McFarland) / 江南、江维 / 机械工业出版社 / 2017-4 / 49.00

《从优秀到卓越》前传。 深入调查7000多家公司、1500多名关键管理人员,总结提炼出6大突破式发展策略。 解析创业成功后的公司如何腾飞,以几何速度增长,突破10亿关口。 阐述为什么创始人自己才是企业实现突破的最大障碍。一起来看看 《突破之道》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

html转js在线工具
html转js在线工具

html转js在线工具