热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux之Ansible的安装与使用(安装httpd和mysql)

一、Ansibleansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、che

一、Ansible

ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:

(1)连接插件connection plugins:负责和被监控端实现通信;

(2)host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;

(3)各种模块核心模块、command模块、自定义模块;

(4)借助于插件完成记录日志邮件等功能;

(5)playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

二、Ansible的安装

实验准备:

server1——Ansible管理结点(172.25.5.1)

server2和server3——node结点(172.25.5.2和172.25.5.3)

ansible相关软件

ansible-2.7.8-1.el7.noarch.rpm
libtomcrypt-1.17-25.el7.x86_64.rpm
libtommath-0.42.0-5.el7.x86_64.rpm
python2-crypto-2.6.1-13.el7.x86_64.rpm
python2-jmespath-0.9.0-1.el7.noarch.rpm
python-httplib2-0.9.2-0.1.el7.noarch.rpm
python-keyczar-0.71c-2.el7.noarch.rpm
python-paramiko-2.1.1-0.9.el7.noarch.rpm
sshpass-1.06-1.el7.x86_64.rpm

1. 安装软件,查看软件版本

yum install -y *.rpm
ansible --version #查看版本

2. 创建普通用户及ansible目录

一般情况下,是不允许root用户远程登录主机并对主机进行操控的,因此我们需要创建一个普通用户,用来进行自动化管理

inventory是Ansible管理主机信息的配置文件,相当于系统HOSTS文件的功能,默认存放在/etc/ansible/hosts。

[root@server1 ansible]# useradd devops
[root@server1 ansible]# passwd devops
[root@server1 ansible]# su - devops
[devops@server1 ~]$ ls
[devops@server1 ~]$ mkdir ansible
[devops@server1 ansible]$ vim ansible.cfg #主配置文件
[defaults]
inventory = ./inventory
[devops@server1 ansible]$ vim inventory #主机及组清单
[test] #组
172.25.5.2 #被管理的主机
[prod]
172.25.5.3

组与组之间可以相互调用,并且可以向组中的主机指定变量。不过,这些变量只能在Ansible-playbook中使用,而Ansible不支持。

#分别在server2和server3中创建devops用户并修改密码
[root@server2 ~]# useradd devops
[root@server2 ~]# passwd devops

3. 为server1建立免密连接方便管理

[devops@server1 ansible]$ ssh-keygen #生成公钥和私钥
[devops@server1 ansible]$ ssh-copy-id 172.25.5.2
[devops@server1 ansible]$ ssh-copy-id 172.25.5.3

4. 测试免密连接及ping模块

[devops@server1 ansible]$ ssh 172.25.5.2 #测试免密
[devops@server1 ansible]$ ssh 172.25.5.3
[devops@server1 ansible]$ ansible all -m ping #测试ping模块
[devops@server1 ansible]$ ansible all -m ping -u devops
[devops@server1 ansible]$ ansible all -m ping -u root #root用户是不允许登录的
[devops@server1 ansible]$ ansible all -m ping -u devops -b #普通用户切换为root身份

5. copy模块的使用

(1)普通文件的拷贝(普通用户和root都可以编辑的文件)

[devops@server1 ansible]$ ansible test -m copy -a "src=/etc/passwd dest=/tmp/passwd"
[devops@server1 ansible]$ ansible test -a "ls /tmp" #查看文件是否拷贝到指定目录
[devops@server1 ansible]$ ansible test -a "rm /tmp/passwd" #删除文件

(2)只允许root用户进行操作的文件,我们需要给普通用户下放权利,使devops用户也可以拷贝

[root@server2 ~]# vim /etc/sudoers
devops ALL=(ALL) NOPASSWD: ALL
[devops@server1 ansible]$ ansible test -m copy -a "src=/etc/passwd dest=/mnt/passwd" -b

(3)设置sudo为默认的切换方法,devops用户可以使用-b命令切换为root用户

[devops@server1 ansible]$ vim ansible.cfg
[defaults]
inventory = ./inventory[privilege_escalation]
become=True
become_method=sudo
become_user=root
become_ask_pass=False

三、ansible中的正则

[devops@server1 ansible]$ cat inventory
[test]
172.25.5.2[prod]
172.25.5.3
172.25.5.2
[webserver:children]
test
prod
[devops@server1 ansible]$ ansible 'test:prod' -m ping
[devops@server1 ansible]$ ansible 'test:!prod' -m ping
[devops@server1 ansible]$ ansible 'test:&prod' -m ping
[devops@server1 ansible]$ ansible webserver -m ping

四、Ansible中常用模块的使用

1. yum模块和servcie模块安装httpd服务

[devops@server1 ansible]$ ansible test -m yum -a "name=httpd state=present" #安装软件
[devops@server1 ansible]$ ansible test -a "rpm -q httpd" #查看软件是否安装
[devops@server1 ansible]$ ansible test -m service -a "name=httpd state=started" #开启服务
[devops@server1 ansible]$ ansible test -m service -a "name=httpd state=stopped" #关闭服务
[devops@server1 ansible]$ ansible test -m yum -a "name=httpd state=absent" #卸载软件

在server2中查看该服务是否安装和开启

[root@server2 ~]# systemctl status httpd
[root@server2 ~]# rpm -q | grep httpd

2. mariadb数据库的安装和使用

[devops@server1 ansible]$ ansible test -m yum -a "name=mariadb-server state=present"
[devops@server1 ansible]$ ansible test -m yum -a "name=MySQL-python state=present"
[devops@server1 ansible]$ ansible test -m service -a "name=mariadb state=started"
[devops@server1 ansible]$ ansible test -m mysql_user -a "name=jiang password=westos priv=*.*:select host='%' state=present" #创建用户并授权

在物理机中测试,是否可以远程登录数据库

[root@foundation5 ansible]# mysql -h 172.25.5.2 -u jiang -p

数据库中用户密码的设置

[devops@server1 ansible]$ ansible test -m user -a "name=jiang password={{ 'westos'|password_hash('sha512') }}" #hash加密用户密码
[devops@server1 ansible]$ ansible test -m user -a "name=jiang password={{ 'westos'|password_hash('sha512','mysalt') }}"

 


推荐阅读
  • Ansible:自动化运维工具详解
    Ansible 是一款新兴的自动化运维工具,基于 Python 开发,集成了多种运维工具(如 Puppet、CFEngine、Chef、Func 和 Fabric)的优点,实现了批量系统配置、程序部署和命令执行等功能。本文将详细介绍 Ansible 的架构、特性和优势。 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • PHP面试题精选及答案解析
    本文精选了新浪PHP笔试题及最新的PHP面试题,并提供了详细的答案解析,帮助求职者更好地准备PHP相关的面试。 ... [详细]
  • 本文详细介绍了如何在Linux系统(以CentOS为例)上彻底卸载Zimbra邮件系统,包括停止服务、删除文件和用户等步骤。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • 本文探讨了在Windows系统中运行Apache服务器时频繁出现崩溃的问题,并提供了多种可能的解决方案和建议。错误日志显示多个子进程因达到最大请求限制而退出。 ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • 本文介绍如何使用JavaScript中的for循环来创建一个九九乘法表,适合初学者学习循环结构的应用。 ... [详细]
  • 本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ... [详细]
  • 在编程实践中,正确管理和释放资源是非常重要的。本文将探讨 Python 中的 'with' 关键字及其背后的上下文管理器机制,以及它们如何帮助我们更安全、高效地管理资源。 ... [详细]
  • 电商高并发解决方案详解
    本文以京东为例,详细探讨了电商中常见的高并发解决方案,包括多级缓存和Nginx限流技术,旨在帮助读者更好地理解和应用这些技术。 ... [详细]
  • 提升 Kubernetes 集群管理效率的七大专业工具
    Kubernetes 在云原生环境中的应用日益广泛,然而集群管理的复杂性也随之增加。为了提高管理效率,本文推荐了七款专业工具,这些工具不仅能够简化日常操作,还能提升系统的稳定性和安全性。从自动化部署到监控和故障排查,这些工具覆盖了集群管理的各个方面,帮助管理员更好地应对挑战。 ... [详细]
author-avatar
小菜刀丶
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有