Ansible自动化部署(2):playbooks简单编写以及常用模块

一、实现功能

ansible playbooks编写规范,可以通过ansible主机,对目标主机进行管理。

二、具体操作步骤

1.加载ansible环境

(1)登陆ansible主机,切换到ansible,运行,加载3.6虚拟环境

[root@bigdata modules]# su - deploy
[deploy@bigdata ~]$ source .py3-a2.5-env/bin/activate
(.py3-a2.5-env) [deploy@bigdata ~]$

(2)加载ansible2.5,到当前deploy用户

(.py3-a2.5-env) [deploy@bigdata ~]$ source /home/deploy/.py3-a2.5-env/ansible/hacking/env-setup –q
查看版本
(.py3-a2.5-env) [deploy@bigdata ~]$ asible-playbook --version
-bash: asible-playbook: command not found
(.py3-a2.5-env) [deploy@bigdata ~]$ ansible-playbook --version
ansible-playbook 2.5.15 (stable-2.5 4f5084d9d2) last updated 2019/10/03 12:29:27 (GMT +800)
  config file = None
  configured module search path = ['/home/deploy/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/deploy/.py3-a2.5-env/ansible/lib/ansible
  executable location = /home/deploy/.py3-a2.5-env/ansible/bin/ansible-playbook
  python version = 3.6.5 (default, Oct  3 2019, 08:13:47) [GCC 4.4.7 20120313 (Red Hat 4.4.7-23)]

2.playbooks目录

(.py3-a2.5-env) [deploy@bigdata ~]$ tree
.
    ├── deploy.yml:playbook任务入口
    ├── inventory:server详细清单目录
    │?? └── testenv具体清单与变量声明文件
    └── roles:roles任务列表
        └── testbox:testbox详细任务
            └── tasks
                └── main.yml:testbox主任务文件

3.testenv:目标主机名和对应的变量名称

[testservers] #Server组列表
hadoop02 #目标部署服务器主机名

[testservers:vars] #Server组列表参数
server_name=hadoop02 #目标主机key/value参数
user=root
output=/root/test.txt

4.main.yml

- name: Print server name and user to remote testbox
  shell: "echo 'Currently {{  user }} is logining {{ server_name }}' > {{ output }}"

备注:
(1)    第一行“-”后面一个空格,再添加name
(2)    第二行,shell要和name对齐,使用shell模块执行命令
(3)    其中{{}}中变量对应testenv中文件内容
[testservers:vars]
server_name=hadoop02
user=root
output=/root/test.txt


5.deploy.yml: playbook入口

- hosts: "testservers" #server列表
  gather_facts: true #获取server基本信息
  remote_user: root #目标服务器系统用户指定
  roles:
    - testbox #进入roles/testbox任务目录


6.ssh免密要认证
Ansible可知直接ssh直接登陆目标主机,而不需要密码

(1)ansible主机生成ssh

ssh-keygen -t rsa

(2)Ansible服务器的公钥分配给目标主机

ssh-copy-id -i /home/deploy/.ssh/id_rsa.pub root@192.168.31.4

(3)修改hosts文件,添加

192.168.31.4 hadoop02

7.启动playbook部署工作执行playbook

 (.py3-a2.5-env) [deploy@bigdata ~]$ cd /home/deploy/test_playbooks

(.py3-a2.5-env) [deploy@bigdata test_playbooks]$ ansible-playbook -i inventory/testenv  ./deploy.yml

PLAY [testservers] ****************************************************************************

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

TASK [testbox : Print server name and user to remote testbox] *********************************
changed: [hadoop02]

PLAY RECAP ************************************************************************************
hadoop02     : ok=2    changed=1    unreachable=0    failed=0   

备注:
(1)inventory/testenv指定部署目标主机域名
(2)deploy.yml指明部署具体任务位置:roles-》testbox
8.查看结果
登陆到hadoop02主机

[root@bigdata ~]# cd /root/
[root@bigdata ~]# vi test.txt

成功到目标主机

Currently root is logining hadoop02

三、playbooks常用模块

1.File模块
在目标主机创建文件或目录,并赋予其系统权限
2.Copy模块
实现ansible服务端到目标主机的文件传送
3.Stat模块
获取远程文件状态信息
4.Debug模块
打印语句到ansible执行输出
5.Command/Shell模块
用来执行Linux目标主机命令行
6.Template模块
实现ansible服务端到目标主机的jinja2模板传送
7.Packaging模块
调用目标主机系统包管理工具(yum,apt)进行安装
8.Service模块
管理目标主机系统服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值