ansible的常用模块配置说明及批量部署服务

ansible的常用模块配置说明及批量部署服务

ansible的常用模块配置说明,在远程服务器批量配置清华大学的仓库文件,批量部署nginx,并启动服务。 
ansible知识点:

一、Ansible特点:

1、部署简单,只需在主控端部署Ansible环境,被控端无需做任何操作;

2、有大量常规运维操作模块,可实现日常绝大部分操作;

3、配置简单、功能强大、扩展性强;

4、通过Playbook来定制强大的配置;

二、ansible要实现管理主机,需要满足以下两点:

1、主机清单中需要配置被管理主机的主机名或者ip

2、要能够连上被管理主机(授权);

ansible的常用模块配置说明,在远程服务器批量配置清华大学的仓库文件,批量部署nginx,并启动服务。

环境:

Ansible:172.20.26.167

远程服务器:172.20.26.198、172.20.26.24

在172.20.26.167服务器上配置yum仓库,安装部署ansible

yum install epel-release -y  #配置epel仓库

yum install ansible -y  #安装ansible

[root@bogon ~]# rpm -ql ansible           #查看ansible 提供的大量脚本文件

[root@bogon ~]# rpm -ql ansible | wc -l    #统计出有17312个脚本文件

[root@bogon ~]# rpm -qc ansible         #查看ansible的配置文件

[root@bogon ~]# vim /etc/ansible/hosts

对单台服务器进行管理

172.20.26.198 ansible_ssh_pass=1

172.20.26.24 ansible_ssh_pass=1

保存退出

配置远程服务器免密访问

[root@bogon ~]# ssh-keygen

将秘钥copy到远程服务器,一路回车,输入root密码,回车即可

[root@bogon ~]# ssh-copy-id 172.20.26.198

[root@bogon ~]# ssh-copy-id 172.20.26.24

在172.20.26.167服务器上通过ansible 查看远程服务器的内存情况

[root@bogon ~]# ansible 172.20.26.198 -m shell -a "free -h"

[root@bogon ~]# ansible 172.20.26.24 -m shell -a "free -h"

也可以加上-k ,输入远程服务器root密码来进行管理,如果是一起输入多台服务器进行管理,因为只能输入一次密码,则多台服务器的root密码要一致。

ansible 172.20.26.198 -m shell -a "free -m" -k

ansible 172.20.26.198,172.20.26.24 -m shell -a "free -m" -k

如果不配置免密,也不想加上-k ,也可以将密码写入hosts配置文件里,

vim /etc/ansible/hosts

172.20.26.198 ansible_ssh_pass=1

172.20.26.24  ansible_ssh_pass=1

如果服务器较多的话,我们也可以配置主机组

vim /etc/ansible/hosts

查看磁盘信息

一台主机也可以归属于不同主机组,172.20.26.198 属于nginx主机组,也可以属于mysql主机组

ansible mysql -m shell -a "df -h"

command模块:创建目录

ansible nginx -m command -a "mkdir -p /tmp/discuz"

由于command模块为默认模块,所以也可以不用写,

ansible nginx -a "mkdir -p /tmp/wordpress"

上面我们创建目录,接下来我们可以来批量安装apache服务。

yum install httpd -y yum makecache  #在执行下面命令前,可以在远程服务器提前将安装源的缓存做好

ansible nginx -a "yum install httpd -y"

通过rpm -q httpd 在172.20.26.198,172.20.26.24服务器上查看安装情况

我们也可以将上面安装时提示WARNING 信息,取消显示

vim /etc/ansible/ansible.cfg

我们再来创建目录,就不会有警告信息了;

由于command 模块有一定的缺陷,不支持以下 $HOME,<,>, |, ;,&命令

shell模块:

可以实现在远程服务器执行shell命令,并且弥补了command的一些缺陷!

ansible nginx -m shell -a "ls /tmp/ | grep wordpress"

也可以将shell 设置为默认模块

vim /etc/ansible/ansible.cfg

ansible nginx -a "ls /tmp/ | grep wordpress"

copy模块:

可以实现将ansible管理主机的文件内容分发到远程服务器。

ansible nginx -m copy -a "src=/etc/fstab dest=/tmp/"

也可以在copy 的同时修改权限以及属主,不过需要远程服务器已有要设置的属主用户,例如jfedu用户

ansible nginx -m copy -a "src=/etc/passwd dest=/tmp/ mode=600 owner=jfedu"

如果copy的文件名称已存在,文件内容不一样,copy后进行更新

删除的3行被更新回来

如果copy的文件名称已存在,文件内容不一样,原文件还想继续保留,可以使用backup=yes 开启备份

我们删除172.20.26.198服务器上/tmp/passwd文件中的6行

ansible nginx -m copy -a "src=/etc/passwd dest=/tmp/ mode=600 owner=jfedu backup=yes"

copy 文件与copy目录是一样的,不需要加-r来递归,我们在/tmp下创建jf目录,再创建test.txt文件,现在将jf目录copy到远程服务器上

ansible nginx -m copy -a "src=/tmp/jf dest=/tmp/"

复制字符串:将“welcome to jfedu”字符串复制到远程服务器的/tmp下的hello文件里

ansible nginx -m copy -a "content='welcome to jfedu\n' dest=/tmp/hello"

fetch模块:

可以实现将远程服务器的文件(不支持直接拉取目录,可以先将目录打包成文件)拉取到ansible管理主机。

我们将远程服务器上/tmp目录下的fstab文件拉取到本地的root目录下,即使目的目录下有同名的文件,也不会有冲突,因为ansible会自动将拷贝回来的文件存放在以远程服务器IP地址为目录下再创建源文件的上一级目录,

ansible nginx -m fetch -a "src=/tmp/fstab dest=/root/"

以远程服务器IP地址为目录,是因为读取的ansible中 hosts文件中主机组里的IP信息,如果hosts文件中主机组里用主机名来设置,则会以主机名来作为目录名称,取决于hosts文件里怎么定义。

synchronize模块:

可以实现目录、文件的同步,主要基于rsync命令工具同步目录和文件。

ansible nginx -m synchronize -a "src=/etc/passwd dest=/tmp/"

由于没有ansible服务器和远程服务器均没有安装rsync导致报错

在ansible服务器安装rsync

yum install rsync -y

ansible nginx -m shell -a "yum install rsync -y"   利用ansible 对远程服务器安装rsync

rsync 都安装好后,再运行synchronize 模块命令

ansible nginx -m synchronize -a "src=/etc/passwd dest=/tmp/"

在172.20.26.198、172.20.26.24服务器上查一下同步情况

从172.20.26.24服务器上的/etc/passwd文件拉取目录到本地tmp临时目录下,使用pull参数。

ansible 172.20.26.24 -m synchronize -a "src=/etc/passwd dest=/tmp/ mode=pull"

file模块:

该模块可以实现对文件的基本操作。比如,创建文件或目录、删除文件或目录、修改文件权限等。

#创建普通文件:在远程服务器上/tmp/目录下创建password文件

ansible nginx -m file -a "name=/tmp/password state=touch"

# 创建目录:在远程服务器上/tmp/目录下创建web目录

ansible nginx -m file -a "name=/tmp/web state=directory"

# 删除文件:将远程服务器上/tmp/目录下的password文件删除

ansible nginx -m file -a "name=/tmp/password state=absent"

# 创建软连接:将ansible服务器上etc/passwd软连接到远程服务器上tmp目录下的passwd文件

创建远程服务器上tmp目录下的passwd文件与ansible服务器上etc/passwd的软连接

ansible nginx -m file -a "src=/etc/passwd dest=/tmp/password state=link"

# 创建新文件,顺便设置文件属性:

ansible nginx -m file -a "name=/tmp/passwd mode=600 owner=jfedu state=touch"

# 修改文件属性:

ansible nginx -m file -a "name=/tmp/passwd mode=644 owner=root"

配置清华大学源:

方法1、在ansible服务器上配置好tsinghua.repo文件

vim /etc/yum.repos.d/tsinghua.repo

[tsinghua]

name= centos 7 tsinghua repo

baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64

anabled=1

gpgcheck=1

gpgkey=https://mirrors.tuna.tsinghua.edu.cn/epel/RPM-GPGKEY-EPEL-7"

然后通过copy 模块,将ansible服务器上的tsinghua.repo文件拷贝到远程服务器上,即可

ansible nginx -m copy -a "src=/etc/yum.repos.d/tsinghua.repo dest=/etc/yum.repos.d"

方法2、直接用下面的命令对远程服务器批量部署清华大学的仓库文件

ansible nginx -m yum_repository -a "name=tsinghua description='centos 7 tsinghua repo' baseurl='https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64 /' enabled=yes gpgcheck=yes gpgkey=https://mirrors.tuna.tsinghua.edu.cn/epel/RPM-GPGKEY-EPEL-7"

批量部署nginx,并启动服务

远程服务器需要更新yum源

yum install epel-release -y

yum makecache

yum update

更新yum缓存

使用ansible的playbook,进行批量部署nginx,并启动服务

vim nginx.yml  创建yml配置文件

---

- hosts: nginx

  remote_user: root

 

  tasks:

    - name: auto install nginx

      yum: name=nginx

    - name: start nginx

      service: name=nginx state=started enabled=yes

ansible-playbook -C nginx.yml  检查nginx.yml 语法是否正确?

ansible-playbook nginx.yml   执行playbook命令

检查远程服务器nginx服务安装以及启动情况

批量部署nginx,并启动服务配置完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/452163.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生物发酵展同期论坛|2024节能环保绿色低碳发展论坛

“十四五”规划中提出&#xff0c;提高工业、能源领城智能化与信息 化融合&#xff0c;明确“低碳经济”新的战略目标&#xff0c;热能产业是能源产 业和民生保障的重要组成部分&#xff0c;也是二氧化碳排放量大的行业 之一&#xff0c;产业高效、清洁、低碳、灵活、智能化水平…

Rust 第一个rust程序Hello Rust️

文章目录 前言一、vscode 安装rust相关插件二、Cargo New三、vscode调试rustLLDB 前言 Rust学习系列。今天就让我们掌握第一个rust程序。Hello Rust &#x1f980;️。 在上一篇文章我们在macOS成功安装了rust。 一、vscode 安装rust相关插件 以下是一些常用的 Rust 开发插件…

Docker基础与持续集成

docker 基础知识&#xff1a; docker与虚拟机 !左边为虚拟机&#xff0c;右边为docker环境 – Server :物理机服务器Host OS &#xff1a;构建的操作系统Hypervisor &#xff1a;一种虚拟机软件&#xff0c;装了之后才能虚拟化操作系统Guest OS &#xff1a;虚拟化的操作系统…

AI应用开发-git开源项目的一些问题及镜像解决办法

AI应用开发相关目录 本专栏包括AI应用开发相关内容分享&#xff0c;包括不限于AI算法部署实施细节、AI应用后端分析服务相关概念及开发技巧、AI应用后端应用服务相关概念及开发技巧、AI应用前端实现路径及开发技巧 适用于具备一定算法及Python使用基础的人群 AI应用开发流程概…

python爬虫之豆瓣首页图片爬取

网址&#xff1a;https://movie.douban.com/ import requests from lxml import etree import re url https://movie.douban.com headers {User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.289 Safari/5…

小埋的解密游戏的题解

题目描述 小埋最近在玩一个解密游戏&#xff0c;这个游戏的解密方法是这样的&#xff0c;这个游戏会给你提供 个数,让我们求出这 个数里面&#xff0c;有多少个连续的数的平均数大于某个给定的数 。这个数可能会很大&#xff0c;所以我们要输出这个数对 的取模结果。现在小…

【脑电信号处理与特征提取】P7-涂毅恒:运用机器学习技术和脑电进行大脑解码

运用机器学习技术和脑电进行大脑解码 科学研究中的大脑解码 比如2019年在Nature上一篇文章&#xff0c;来自UCSF的Chang院士的课题组&#xff0c;利用大脑活动解码语言&#xff0c;帮助一些患者恢复语言功能。 大脑解码的重要步骤 大脑解码最重要的两步就是信号采集和信号…

Pycharm 关闭/退出烦人的Pytest模式

Pycharm 遇到&#xff1a;Run Python tests in ***.py &#xff0c;但很多时候我们并不需要&#xff0c;真心烦人&#xff01; 如何解决: 1 打开File-Settings &#xff08;图片是新版界面&#xff0c;旧版同样操作&#xff09; 2 Tools 中的Python Integrated Tools 在Tes…

impala与kudu进行集成

文章目录 概要Kudu与Impala整合配置Impala内部表Impala外部表Impala sql操作kuduImpala jdbc操作表如果使用了Hadoop 使用了Kerberos认证&#xff0c;可使用如下方式进行连接。 概要 Impala是一个开源的高效率的SQL查询引擎&#xff0c;用于查询存储在Hadoop分布式文件系统&am…

新开发板-正点原子的rk3568

有好长一段时间没有更新博客了&#xff0c;上次更新还是在上次...哈哈开个玩笑&#xff0c;上次stm32f407的定时器还没写完&#xff0c;就备战期末去了&#xff08;电信学院&#xff0c;你懂的&#xff09;&#xff0c;一直没更新&#xff0c;原因是我实习去了&#xff0c;在忙…

【算法】{画决策树 + dfs + 递归 + 回溯 + 剪枝} 解决排列、子集问题(C++)

文章目录 1. 前言2. 算法例题46.全排列78.子集 1. 前言 dfs问题 我们已经学过&#xff0c;对于排列、子集类的问题&#xff0c;一般可以想到暴力枚举&#xff0c;但此类问题用暴力解法 一般都会超时&#xff0c;时间开销过大。对于该种问题&#xff0c;重点在于尽可能详细的 画…

父类之王“Object”类和内部类

&#x1f468;‍&#x1f4bb;作者简介&#xff1a;&#x1f468;&#x1f3fb;‍&#x1f393;告别&#xff0c;今天 &#x1f4d4;高质量专栏 &#xff1a;☕java趣味之旅 欢迎&#x1f64f;点赞&#x1f5e3;️评论&#x1f4e5;收藏&#x1f493;关注 &#x1f496;衷心的希…