--- #必须字段,类同于#/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。
当我们把shell脚本转换为Playbook运行的时候,Ansible 会留下清晰的执行痕迹,明确告诉我们在每一台主机上的每一步都做了什么。同时,Ansible 自带幂等判断机制也为运维省去不少伤脑费心的人脑逻辑判断运算。当我们重复执行一个Playbook时,当Ansible发现系统的现有状态与Playbook所定义的将要实现的状态一致时,Ansible 将自动跳过该操作。
如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!
赞0
添加新评论0 条评论