不积跬步,无以至千里;不积小流,无以成江海。

Dean's blog

  • Join Us on Facebook!
  • Follow Us on Twitter!
  • LinkedIn
  • Subcribe to Our RSS Feed

ansible 使用测试

ansible是一款deops运维工具,使用它可以方便的管理多个主机。目前参照网上的使用教程,记录下使用的方式:

安装ansible

yum install ansible

配置ssh免密登录

ssh-keygen localhost -P ""

ssh-copy-id localhost

SSH配置过程可以参考:安装 Hadoop 伪分布式环境

配置固定IP可以参考:CentOS 7配置固定IP

修改hosts

vi /etc/ansible/hosts
[hadoop]

192.168.2.[200:203]

这里:

[hadoop]

对主机进行分组

192.168.2.[200:203]

[200:203]指的是192.168.2.200~203共四台主机,当然也可以单个配置。

调整ansible配置

vi /etc/ansible/ansible.cfg

找到:

...
host_key_checking = False #禁用每次执行ansbile命令检查ssh key host
...
log_path = /var/log/ansible.log #开启日志记录
...
[accelerate] #ansible连接加速配置
#accelerate_port = 5099
accelerate_port = 10000
...
accelerate_multi_key = yes
...
deprecation_warnings = False #屏蔽弃用告警提示,减少不必要的信息显示
...

测试

ansible all -m ping
192.168.2.203 | SUCCESS => {
"changed": false,
"ping": "pong"
}
192.168.2.201 | SUCCESS => {
"changed": false,
"ping": "pong"
}
192.168.2.202 | SUCCESS => {
"changed": false,
"ping": "pong"
}
192.168.2.200 | SUCCESS => {
"changed": false,
"ping": "pong"
}

其中: 

ansible all -m ping

是对配置的所有配置的主机,如果只想对指定的分组执行操作替换为指定的分组名称即可,例如:ansible hadoop -m ping。

ansible all -m ping

-m 指定模块,这里使用的是ping模块

Ad-Hoc工作模式示例

ansible hadoop -m copy -a "src=~/Labixiaoxin.jpeg dest=~/Lbxx.jpeg"

这里使用的是Copy模块,这个用于将ansible管理主机上的文件复制到远程主机上。使用Ad-Hoc时,需要两个参数:

src     ansible上的文件
dest   远程主机上的保存目录

执行结果类似:

192.168.2.201 | SUCCESS => {
"changed": true,
"checksum": "eb55604c965d10308902b4e442fbe394e1e51b7f",
"dest": "/home/hadoop/Lbxx.jpeg",
"gid": 1000,
"group": "hadoop",
"md5sum": "81bf4920a96f2a76f7d86865a8b3b1b1",
"mode": "0664",
"owner": "hadoop",
"secontext": "unconfined_u:object_r:user_home_t:s0",
"size": 263804,
"src": "/home/hadoop/.ansible/tmp/ansible-tmp-1580216948.9-101431322413807/source",
"state": "file",
"uid": 1000
}
192.168.2.203 | SUCCESS => {
"changed": true,
"checksum": "eb55604c965d10308902b4e442fbe394e1e51b7f",
"dest": "/home/hadoop/Lbxx.jpeg",
"gid": 1000,
"group": "hadoop",
"md5sum": "81bf4920a96f2a76f7d86865a8b3b1b1",
"mode": "0664",
"owner": "hadoop",
"secontext": "unconfined_u:object_r:user_home_t:s0",
"size": 263804,
"src": "/home/hadoop/.ansible/tmp/ansible-tmp-1580216949.12-46651644536986/source",
"state": "file",
"uid": 1000
}
192.168.2.202 | SUCCESS => {
"changed": true,
"checksum": "eb55604c965d10308902b4e442fbe394e1e51b7f",
"dest": "/home/hadoop/Lbxx.jpeg",
"gid": 1000,
"group": "hadoop",
"md5sum": "81bf4920a96f2a76f7d86865a8b3b1b1",
"mode": "0664",
"owner": "hadoop",
"secontext": "unconfined_u:object_r:user_home_t:s0",
"size": 263804,
"src": "/home/hadoop/.ansible/tmp/ansible-tmp-1580216949.14-40512167503252/source",
"state": "file",
"uid": 1000
}
192.168.2.200 | SUCCESS => {
"changed": true,
"checksum": "eb55604c965d10308902b4e442fbe394e1e51b7f",
"dest": "/home/hadoop/Lbxx.jpeg",
"gid": 1000,
"group": "hadoop",
"md5sum": "81bf4920a96f2a76f7d86865a8b3b1b1",
"mode": "0664",
"owner": "hadoop",
"secontext": "unconfined_u:object_r:user_home_t:s0",
"size": 263804,
"src": "/home/hadoop/.ansible/tmp/ansible-tmp-1580216949.59-146227527744584/source",
"state": "file",
"uid": 1000
}

如果想查看远程主机上的文件情况,可以使用shell模块:

ansible hadoop -m shell -a "ls /home/hadoop"


playbook剧本模式示例

可以将上面的Ad-Hoc任务转换为playbook模式执行:

步骤1、编写yml文件:

vi copyFile.yml

内容:

---
- hosts: hadoop
  tasks:
  - name: copy file to hosts
    copy: src=~/Labixiaoxin.jpeg dest=~/Lbxx.jpeg

playbook文件简要介绍:

---        只能出现在文件头,而且只能出现一次,代表文件的开始

- hosts: hadoop    -和:后都需要跟随一个空格,hadoop代表的是hosts文件中的分组,可多个

tasks:  代表任务清单

- name: .....用于说明任务的内容

copy: .....是具体执行的指令

playbook更详细介绍见:http://www.ansible.com.cn/docs/playbooks.html

YAML 语法详细见:http://www.ansible.com.cn/docs/YAMLSyntax.html

 步骤2、执行剧本

ansible-playbook copyFile.yml

使用ansible-playbook 执行剧本文件,执行结果类似:

PLAY [hadoop] *************************************************************************

TASK [Gathering Facts] ****************************************************************
ok: [192.168.2.203]
ok: [192.168.2.202]
ok: [192.168.2.201]
ok: [192.168.2.200]

TASK [copy file to hosts] *************************************************************
changed: [192.168.2.201]
changed: [192.168.2.202]
changed: [192.168.2.203]
changed: [192.168.2.200]

PLAY RECAP ****************************************************************************
192.168.2.200 : ok=2 changed=1 unreachable=0 failed=0
192.168.2.201 : ok=2 changed=1 unreachable=0 failed=0
192.168.2.202 : ok=2 changed=1 unreachable=0 failed=0
192.168.2.203 : ok=2 changed=1 unreachable=0 failed=0

相关链接

Ansible中文权威指南:http://www.ansible.com.cn/

使用ansible控制Hadoop服务的启动和停止:https://www.cnblogs.com/sfccl/p/11247129.html

不允许评论
粤ICP备17049187号-1