itjava
作者itjava·2021-05-07 14:26
系统工程师·某保险

Ansible 之 ansible-playbook基础入门例子

字数 5612阅读 2090评论 0赞 0

一、通过playbook安装与设置zookeeper

---                                       #必须字段,类同于#/bin/bash
- hosts: test                        #远程操作主机
  remote_user: cedar          #远程操作用户
  become: yes                    #是否sudo 
  tasks:
    - name: "安装zookeeper"                                                      #任务命名
      command: yum -y install mesosphere-zookeeper              #远程执行命令安装zook
    - name: "启动zookeeper"                                   #任务命名
      service:                                                             #service模块
        name: zookeeper                                           #服务名zookeeper
        state: started                                                  #动作started
    - name: "设置开机启动"                                     #任务命名
      service:                                                            #service模块
        name: zookeeper                                           #服务名zookeeper
        enabled: yes                                                  #enabled参数为YES开机启动

二、验证结果

[root@Ansible playbook]# ansible-playbook test.yaml 

PLAY [test] *****************************************************************************************************************************************************

TASK [Gathering Facts] ******************************************************************************************************************************************
ok: [10.3.153.8]

TASK [安装zookeeper] **********************************************************************************************************************************************
[WARNING]: Consider using the yum module rather than running 'yum'.  If you need to use command because yum is insufficient you can add 'warn: false' to this
command task or set 'command_warnings=False' in ansible.cfg to get rid of this message.
changed: [10.3.153.8]

TASK [启动zookeeper] **********************************************************************************************************************************************
changed: [10.3.153.8]

TASK [设置开机启动] ***************************************************************************************************************************************************
ok: [10.3.153.8]

PLAY RECAP ******************************************************************************************************************************************************
10.3.153.8                 : ok=4    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

You have new mail in /var/spool/mail/root
[root@Ansible playbook]# ansible test -m command -a "systemctl status zookeeper" -u cedar -b
10.3.153.8 | CHANGED | rc=0 >>
● zookeeper.service - Apache ZooKeeper
   Loaded: loaded (/usr/lib/systemd/system/zookeeper.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2021-01-20 03:19:35 EST; 49s ago
 Main PID: 11518 (java)
   CGroup: /system.slice/zookeeper.service
           └─11518 java -Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -cp /opt/mesosphere/zookeeper/bin/../build/classes:/opt/mesosphere/zookeeper/bin/../build/lib/*.jar:/opt/mesosphere/zookeeper/bin/../lib/slf4j-log4j12-1.6.1.jar:/opt/mesosphere/zookeeper/bin/../lib/slf4j-api-1.6.1.jar:/opt/mesosphere/zookeeper/bin/../lib/netty-3.7.0.Final.jar:/opt/mesosphere/zookeeper/bin/../lib/log4j-1.2.16.jar:/opt/mesosphere/zookeeper/bin/../lib/jline-0.9.94.jar:/opt/mesosphere/zookeeper/bin/../zookeeper-3.4.6.jar:/opt/mesosphere/zookeeper/bin/../src/java/lib/*.jar:/etc/zookeeper/conf: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false org.apache.zookeeper.server.quorum.QuorumPeerMain /etc/zookeeper/conf/zoo.cfg

Jan 20 03:19:53 ansible-test zookeeper[11518]: 2021-01-20 03:19:53,010 [myid:] - INFO  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1007] - Closed socket connection for client /10.3.151.86:41692 which had sessionid 0x1771ee0aca90000
Jan 20 03:19:53 ansible-test zookeeper[11518]: 2021-01-20 03:19:53,018 [myid:] - ERROR [SyncThread:0:NIOServerCnxn@178] - Unexpected Exception:
Jan 20 03:19:53 ansible-test zookeeper[11518]: java.nio.channels.CancelledKeyException
Jan 20 03:19:53 ansible-test zookeeper[11518]: at sun.nio.ch.SelectionKeyImpl.ensureValid(SelectionKeyImpl.java:73)
Jan 20 03:19:53 ansible-test zookeeper[11518]: at sun.nio.ch.SelectionKeyImpl.interestOps(SelectionKeyImpl.java:77)
Jan 20 03:19:53 ansible-test zookeeper[11518]: at org.apache.zookeeper.server.NIOServerCnxn.sendBuffer(NIOServerCnxn.java:151)
Jan 20 03:19:53 ansible-test zookeeper[11518]: at org.apache.zookeeper.server.NIOServerCnxn.sendResponse(NIOServerCnxn.java:1081)
Jan 20 03:19:53 ansible-test zookeeper[11518]: at org.apache.zookeeper.server.FinalRequestProcessor.proce***equest(FinalRequestProcessor.java:404)
Jan 20 03:19:53 ansible-test zookeeper[11518]: at org.apache.zookeeper.server.SyncRequestProcessor.flush(SyncRequestProcessor.java:200)
Jan 20 03:19:53 ansible-test zookeeper[11518]: at org.apache.zookeeper.server.SyncRequestProcessor.run(SyncRequestProcessor.java:131)
[root@Ansible playbook]# ansible test -m command -a "systemctl list-unit-files" -u cedar -b | grep zookeeper
zookeeper.service                             enabled 
You have new mail in /var/spool/mail/root
[root@Ansible playbook]# 

三、帮助文档参考

tasks下的内容,均为ansible对应的模块的功能使用,我们可以通过ansible-doc文档去查看每个模块的使用帮助文档与参数描述,如:ansible-doc service。

四、Playbook 与 Shell 脚本差异对比

当我们把shell脚本转换为Playbook运行的时候,Ansible 会留下清晰的执行痕迹,明确告诉我们在每一台主机上的每一步都做了什么。同时,Ansible 自带幂等判断机制也为运维省去不少伤脑费心的人脑逻辑判断运算。当我们重复执行一个Playbook时,当Ansible发现系统的现有状态与Playbook所定义的将要实现的状态一致时,Ansible 将自动跳过该操作。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广