ansible自动化运维入门及playbook简单实操

什么是ansible

Ansible是自动化运维的工具,基于Python开发,实现了批量系统配置、批量程序部署、批量运行命令等功能。

Ansible是基于模块工作的,ansible提供一个框架,通过模块实现批量部署。

在这里插入图片描述

ansible安装、使用

2.1 安装Ansible

使用epel的源安装,添加epel源此处不详述。

[root@zcy-ansible ~]# yum install ansible --enablerepo=epel

2.2 设置密钥登录

生成SSH公钥密钥对

[root@zcy-ansible ~]# ssh-keygen -t rsa -P ''

在这里插入图片描述
拷贝公钥到被管理端的服务器

[root@zcy-ansible ~]# cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
[root@zcy-ansible ~]# chmod 600 /root/.ssh/authorized_keys

确认可以用密钥连接到管理端的服务器

2.3 配置Ansible

定义主机组,可以使用主机名或IP,在管理端编辑配置,加入被控端的ip和名字

我先自己创建一个配置文件的目录

[root@zcy-ansible ansible]# mkdir -p /home/zcy/ansible/

在这里插入图片描述

[root@zcy-ansible ansible]# vim invenroty

[zcy]
192.168.180.131
192.168.180.132

[tt:children]
zcy

在这里插入图片描述
再配置一下ansible的配置文件

[root@zcy-ansible ansible]# vim ansible.cfg

[defaults]
inventory      = /home/zcy/ansible/inventory
remote_user    = root
roles_path     = /home/zcy/ansible/roles


[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False
~                                                                                                                                                
~                          

在这里插入图片描述
因为ansible是用的ssh协议,我们要用ssh生成个秘钥配对上要管理的节点,从而实现免交互

[root@zcy-ansible ansible]# ssh-keygen -t rsa
#生成秘钥对
[root@zcy-ansible ansible]# ssh-copy-id root@192.168.180.131
#将秘钥对发送到被控端主机

一路回车下去
在这里插入图片描述

2.4 使用Ansible

2.4.1 Ping模块

[root@zcy-ansible ansible]# ansible all -m ping

在这里插入图片描述
出现success说明连接成功,就可以对主机进行操作了。

2.4.2 执行命令,command、shell模块

[root@zcy-ansible ansible]# ansible zcy -m command -a 'uptime'
[root@zcy-ansible ansible]# ansible zcy -m shell -a 'date'
[root@zcy-ansible ansible]# ansible zcy -m command -a 'ls /etc/passwd'

在这里插入图片描述

2.4.3 查看配置,setup模块

[root@zcy-ansible ansible]# ansible zcy -m setup

2.4.4 拷贝文件,copy模块

ansible zcy -m copy -a 'src=/home/zcy/ansible/zcy.txt  dest=/tmp/zcy.txt mode=0644'

在这里插入图片描述

2.4.5 添加用户,user模块

[root@zcy-ansible ansible]# ansible zcy -m user -a 'name=test comment="test user" uid=1000 password="crypted-password"'

密码生成方法:
[root@zcy-ansible ansible]# yum install python-pip
[root@zcy-ansible ansible]# pip install passlib
[root@zcy-ansible ansible]# python -c "from passlib.hash import sha512_crypt; import getpass; print sha512_crypt.encrypt(getpass.getpass())"

2.4.6 安装软件,yum模块

[root@zcy-ansible ansible]# ansible zcy -m yum -a 'name=vsftpd state=present'

2.4.7 启动服务,设置开机自启动,service模块

[root@zcy-ansible ansible]# ansible zcy -m service -a 'name=vsftpd state=started enabled=yes'

查看

[root@zcy-ansible ansible]# ansible zcy -m shell -a 'ps -ef| grep ftp'
[root@zcy-ansible ansible]# ansible zcy -m shell -a 'ss -tln| grep 21'

2.4.8 支持管道,raw,shell模块

[root@zcy-ansible ansible]# ansible zcy -m raw -a 'ss -tln| grep 21'

2.5 其他命令

2.5.1 查看帮助

列出所有已安装模块

[root@zcy-ansible ansible]# ansible-doc -l

查看某模块的简介

[root@zcy-ansible ansible]#  ansible-doc -s ping

3. Playbook文件

Playbook是由一个或多个“play”组成的列表,可以让它们联同起来按事先编排的机制执行

# ansible-playbook test.yml

Playbook文件的格式,YAML是一个可读性高的标记语言。

Role可以把playbook分成一个一个模块,使结构更清晰。

3.1 Role的构造

包括 tasks, defaults, vars, files, templates, mata, handlers 各目录,其中 tasks 是必需的。

在这里插入图片描述

3.2 Role的例子

本例子是最基本的构成,只包括tasks

3.2.1 创建目录 roles/apache2/tasks

# mkdir -p roles/apache2/tasks

3.2.2 创建 tasks/main.yml

[root@zcy-ansible ansible]#  mkdir -p roles/apache2/tasks
[root@zcy-ansible ansible]# cd roles/apache2/tasks/
[root@zcy-ansible tasks]# vim main.yml

在这里插入图片描述

3.2.3 创建 Playbook (site.yml)

[root@zcy-ansible ansible]# pwd
/home/zcy/ansible
 
[root@zcy-ansible ansible]# vim site.yml

---
- name: Install Apache2
  hosts: zcy
  remote_user: root
 
  roles:
    - apache2

在这里插入图片描述
执行该playbook

[root@zcy-ansible ansible]# ansible-playbook site.yml 

在这里插入图片描述

3.3 官方的playbook例子

https://github.com/ansible/ansible-examples

3.4 playbook文件加密

ansible-vault 对配置文件(比如playbooks),进行基于密码的加密,防止敏感信息泄露

3.4.1 加密已存在文件

[root@zcy-ansible ansible]# ansible-vault encrypt ./site.yml

在这里插入图片描述
加密后的playbook
在这里插入图片描述

3.4.3 执行加密后的playbook

[root@zcy-ansible ansible]# ansible-playbook ./site.yml --ask-vault-pass

在这里插入图片描述

3.4.4 解密

[root@zcy-ansible ansible]# ansible-vault decrypt ./site.yml

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值