Ansible入门(一)

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

内容简介: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。


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

查看所有标签

猜你喜欢:

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

JavaScript Patterns

JavaScript Patterns

Stoyan Stefanov / O'Reilly Media, Inc. / 2010-09-21 / USD 29.99

What's the best approach for developing an application with JavaScript? This book helps you answer that question with numerous JavaScript coding patterns and best practices. If you're an experienced d......一起来看看 《JavaScript Patterns》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具