首页 > 其他分享 >ansible部署与实践

ansible部署与实践

时间:2023-06-23 10:11:06浏览次数:39  
标签:部署 1.41 实践 sh ansible 模块 172.16 root

自动化工具ansible部署和实践

原创 对点 DevOps云技术栈 2023-06-16 23:26 发表于广东 收录于合集#ansible1个

图片

1 介绍和部署

1.1 介绍

  1. ansible的功能
    ansible是一个基于Python开发的自动化运维工具,基于ssh协议实现远程管理,可以实现多种批量管理操作.

  • 批量系统配置

  • 批量软件部署

  • 批量文件拷贝

  • 批量运行命令

  1. 批量管理服务特征

  • 管理端:不需要启动任何服务,默认服务端不需要任何的配置

  • 受控端:基于ssh免秘钥,没有客户端软件需要安装

1.2 ansible软件安装部署

  1. 环境规划

主机名IP地址用途
master01 10.0.0.61 管理段
backup 10.0.0.41 受控端
nfs01 10.0.0.31 受控端
web01 10.0.0.7 受控端
  1. 免秘钥配置
    生成秘钥对

ssh-keygen -t dsa

分发秘钥

sh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.7
sh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.31
sh-copy-id -i /root/.ssh/id_dsa.pub 172.16.1.41

免交互批量分发秘钥参考我的批量免秘钥分发脚本
3) 口令登录方式配置[备选]
如果企业限制不允许使用ssh免秘钥方式,也可以使用在ansible的主机配置中,制定远程主机用户名和密码的方式

[root@xxxx ~]# vim /etc/ansible/hosts
[noah]
172.16.1.7
172.16.1.31 ansible_user=root ansible_password=123456
172.16.1.41

要先按装了ansibl软件,才会有该配置文件

  1. 安装ansible
    软件安装

yum install -y ansible

若受控主机有启用selinux,会影响ansible链接,在不能禁用的情况下,客户机可以安装以下程序

yum install -y libselinux-python
  • 主机列表创建

cp /etc/ansible/hosts{,.bak}
cat >/etc/ansible/hosts <<"EOF"
[noah]
172.16.1.7
172.16.1.31
172.16.1.41
EOF

1.3 用法说明

  1. 语法

ansible 主机信息  -m 模块名称 -a "相关模块参数""

主机信息:远程主机IP地址,主机组名称,all代表所有主机
-m:指定使用哪个模块
-a:模块中的参数和功能

简单示例:ping模块

[root@xxxx ~]# ansible all -m ping
172.16.1.41 | SUCCESS => {
"changed": false,
"ping": "pong"
}
172.16.1.7 | SUCCESS => {
"changed": false,
"ping": "pong"
}
172.16.1.31 | SUCCESS => {
"changed": false,
"ping": "pong"
}

ping模块没有参数,不用跟-e
2) 返回颜色
ansible会根据返回结果的类型不同,显示不同的颜色

  • 绿色:查看远程主机信息,不会对远程主机系统做任何修改

  • 红色:执行操作出现异常错误

  • 黄色:对远程主机系统进行修改操作

  • 粉色:警告或者忠告信息

2 命令类常用模块

ansible模块列表
https://docs.ansible.com/ansible/latest/modules/modules_by_category.html

2.1 command[命令模块]

  1. 官方链接:
    http://docs.ansible.com/ansible/latest/modules/command_module.html
    说明:该模块与shell模块类似,但不能识别特殊符号

  2. 常用参数:

free_form	[必须]表示执行command模块时,必须要有linux合法命令信息,如ls
chdir 在执行某个命令前,先切换目录
creates 判断一个文件是否存在,如果已经存在了,后面的命令就不会执行
removes 判断一个文件是否存在,如果不存在,后面的命令就不会执行
  1. 举例

  • chdir参数

[root@xxxx ~]# ansible 172.16.1.31 -m command -a "chdir=/tmp/ pwd"
172.16.1.31 | SUCCESS | rc=0 >>
/tmp
  • creates参数

[root@xxxx ~]# ansible 172.16.1.41 -m command -a "creates=/etc/rsyncd.conf hostname"
172.16.1.41 | SUCCESS | rc=0 >>
skipped, since /etc/rsyncd.conf exists
[root@xxxx ~]# ansible 172.16.1.41 -m command -a "creates=/etc/rsyncd.123456 hostname"
172.16.1.41 | SUCCESS | rc=0 >>
backup
  • removes参数

[root@xxxx ~]# ansible 172.16.1.41 -m command -a "removes=/etc/rsyncd.conf hostname"
172.16.1.41 | SUCCESS | rc=0 >>
backup
[root@xxxx ~]# ansible 172.16.1.41 -m command -a "removes=/etc/rsyncd.1212213123 hostname"
172.16.1.41 | SUCCESS | rc=0 >>
skipped, since /etc/rsyncd.1212213123 does not exist

2.2 shell[万能模块]

  1. 官方链接
    https://docs.ansible.com/ansible/latest/modules/shell_module.html#shell-module
    说明:shell模块可以满足command模块所有功能,并且可以支持识别特殊字符信息 < > | ;

  2. 常用参数

free_form	[必须]表示执行command模块时,必须要有linux合法命令信息,如ls
chdir 在执行莫个命令前,先切换目录
creates 判断一个文件是否存在,如果已经存在了,后面的命令就不会执行
removes 判断一个文件是否存在,如果不存在,后面的命令就不会执行
  1. 举例

[root@xxxx ~]# ansible 172.16.1.41 -m shell -a "hostname;pwd"
172.16.1.41 | SUCCESS | rc=0 >>
backup
/root

可以使用该名模,执行所有linux的命令,所以叫万能模块

2.3 script[脚本模块]

  1. 官方连接
    https://docs.ansible.com/ansible/latest/modules/script_module.html#script-module

  2. 常用参数

free_form	[必须]表示执行command模块时,必须要有linux合法命令信息,如ls
chdir 在执行莫个命令前,先切换目录
creates 判断一个文件是否存在,如果已经存在了,后面的命令就不会执行
removes 判断一个文件是否存在,如果不存在,后面的命令就不会执行
  1. 举例

  • 先查看脚本

[root@xxxx ~]# cat /server/scripts/mk.sh
#!/bin/sh
mkdir -p /root/abc/def
touch /root/abc/123.txt
ls -lh /root/abc/*
  • 在调用这个脚本远程执行

[root@xxxx ~]# ansible 172.16.1.7 -m script -a "/server/scripts/mk.sh"
172.16.1.7 | SUCCESS => {
"changed": true,
"rc": 0,
"stderr": "Shared connection to 172.16.1.7 closed.\r\n",
"stdout": "-rw-r--r-- 1 root root 0 6月 18 17:05 /root/abc/123.txt\r\n\r\n/root/abc/def:\r\n总用量 0\r\n",
"stdout_lines": [
"-rw-r--r-- 1 root root 0 6月 18 17:05 /root/abc/123.txt",
"",
"/root/abc/def:",
"总用量 0"
]
}

3 文件类常用模块

3.1 copy[复制模块]

  1. 官方链接:
    https://docs.ansible.com/ansible/latest/modules/copy_module.html#copy-module

  2. 常用参数

backup	对数据信息进行备份
src 定义要推送数据信息
dest [必须]定义将数据推送到远程主机什么目录中
owner 设置复制后的文件属主权限
group 设置复制后的文件属组权限
mode 设置复制后的文件权限(600 755)
  1. 举例

  • backup参数

ansible 172.16.1.41 -m copy -a "src=/tmp/01.txt dest=/tmp/ backup=yes"
  • src,dest参数

ansible 172.16.1.41 -m copy -a "src=/tmp/01.txt dest=/tmp/"

3.2 file[文件操作模块]

  1. 官方链接
    https://docs.ansible.com/ansible/latest/modules/file_module.html#file-module

  2. 常见参数

src		定义要推送数据信息
dest [必须]定义将数据推送到远程主机什么目录中
owner 设置文件属主权限
group 设置文件属组权限
mode 设置文件权限(600 755)
state 用于指定创建目录或文件
  1. 举例

  • 权限参数

ansible 172.16.1.7 -m file -a "dest=/tmp/01.txt owner=oldboy group=oldboy mode=600"
  • state创建文件

ansible 172.16.1.41 -m file -a "dest=/tmp/02.txt state=touch"
  • state创建目录

ansible 172.16.1.41 -m file -a "dest=/tmp/01dir state=directory"

4 包管理.系统服务管理.定时任务模块

4.1 yum[包管理模块]

  1. 官方链接
    https://docs.ansible.com/ansible/latest/modules/yum_module.html#yum-module

  2. 常用参数

name	[必须]执行要安装软件的名称,以及软件的版本
state installed安装 absent(卸载)
list 指定软件名称,查看软件是否可以安装,以及是否安装过
  1. 举例

ansible 172.16.1.41 -m yum -a "name=iftop state=installed"
ansible 172.16.1.41 -m yum -a "name=iftop state=absent"
ansible 172.16.1.41 -m yum -a "list=iftop"

4.2 service[系统服务管理模块]

  1. 官方链接
    https://docs.ansible.com/ansible/latest/modules/service_module.html#service-module

  2. 常用参数

name	[必须]指定要管理的服务名称(管理的服务一定在chkconfig中可以看到)
state stopped started restarted reloaded
enabled yes表示服务开机自启动 no表示服务开机不要自动启动
  1. 举例

ansible 172.16.1.41 -m service -a "name=crond state=started enabled=yes"

4.3 cron[定时任务模块]

  1. 官方链接
    https://docs.ansible.com/ansible/latest/modules/cron_module.html#cron-module

  2. 常用参数

minute	分,写法同系统定时任务,如[0-59] [*] [*/n]   
hour 时,写法同上
day 日,写法同上
month 月,写法同上
weekday 周,写法同上
job 执行命令,如job='/bin/sh /server/scripts/test.sh &>/dev/null'
  1. 举例

  • 添加定时任务

ansible 172.16.1.41 -m cron -a "minute=0 hour=0 job='/bin/sh /server/scripts/test.sh &>/dev/null'"
ansible 172.16.1.41 -m cron -a "name=oldboy02 minute=0 hour=0 job='/bin/sh /server/scripts/test.sh &>/dev/null'"
  • 删除定时任务

ansible 172.16.1.41 -m cron -a "name=oldboy02 minute=0 hour=0 job='/bin/sh /server/scripts/test.sh &>/dev/null' state=absent"
ansible 172.16.1.41 -m cron -a "name=oldboy01 state=absent"
  • 注释定时任务

ansible 172.16.1.41 -m cron -a "name=oldboy01 minute=0 hour=0 job='/bin/sh /server/scripts/test.sh &>/dev/null' disabled=yes"a
ansible 172.16.1.41 -m cron -a "name=oldboy01 job='/bin/sh /server/scripts/test.sh &>/dev/null' disabled=no"

 

文章推荐:

金三银四你准备好了吗,一份满级面试题送上

排除Kubernetes故障,只需3步谈谈nginx中对IP封禁的几种方法排查服务器是否被入侵的11个关键步骤理解nginx的高并发原理及其配置调优30万以上的qps高并发服务如何优化Linux系统安全强化指南

linux三剑客(grep,sed,awk)

DevOps云技术栈 运维技术,前沿资讯的分享 提供专业的运维职业发展方向的建议 提供专业技能培训服务 承接src维护服务 52篇原创内容 公众号 阅读 1470   DevOps云技术栈 52篇原创内容       写下你的留言    

标签:部署,1.41,实践,sh,ansible,模块,172.16,root
From: https://www.cnblogs.com/cherishthepresent/p/17498770.html

相关文章

  • Elasticsearch核心应用场景-日志优化实践
    1.背景日志领域是Elasticsearch(ES)最重要也是规模最大的应用场景之一。这得益于ES有高性能倒排索引、灵活的schema、易用的分布式架构,支持高吞吐写入、高性能查询,同时有强大的数据治理生态、端到端的完整解决方案。但原生ES在高吞吐写入、低成本存储、高性能查询等方面还有......
  • Elasticsearch核心应用场景-日志优化实践
    1.背景日志领域是Elasticsearch(ES)最重要也是规模最大的应用场景之一。这得益于ES有高性能倒排索引、灵活的schema、易用的分布式架构,支持高吞吐写入、高性能查询,同时有强大的数据治理生态、端到端的完整解决方案。但原生ES在高吞吐写入、低成本存储、高性能查询等方面还有......
  • [QML]事无巨细开始实践QML开发(一)什么是QML,为什么学习QML,先写一个简单的页面
    [QML]从零开始QML开发(一)什么是QML,为什么学习QML,先写一个简单的页面QML开发和QWidget开发的区别QML(QtMeta-ObjectLanguage)是Qt提供的一种声明性语言,用于快速创建用户界面。相对而言,QtWidgets是基于C++的桌面应用程序开发框架。下面是QML和QtWidgets之间的一些优缺点以及为何......
  • 深度学习面试、从业-从理论到实践一站式资源整理分享
       本资源是一站式深度学习在线百科,内容涵盖零基础入门深度学习、产业实践深度学习、特色课程;深度学习百问、产业实践(开发中) 等等。从理论到实践,从科研到产业应用,各类学习材料一应俱全,旨在帮助开发者高效地学习和掌握深度学习知识,快速成为AI跨界人才。内容全面:无论您是深度......
  • spring boot 实现热部署
    一、热部署/热加载热部署(HotDeploy):热部署针对的是容器或者是整个应用,部署了新的资源或者修改了一些代码,需要在不停机的情况下的重新加载整个应用。热加载(HotSwap):热加载针对的是单个字节码文件,指的是重新编译后,不需要停机,应用程序就可以加载使用新的class文件。二、springb......
  • 【环境部署】SPECTER模型-基于transformer的科学出版物
    论文背景标题:SPECTER:Document-levelRepresentationLearningusingCitation-informedTransformers摘要:表示学习是自然语言处理系统的关键组成部分。像BERT这样的最新Transformer语言模型学习了强大的文本表示,但这些模型针对标记和句子级别的训练目标,并不利用相关性信息,这限......
  • 负载均衡的部署方式
    网上找到两种负载均衡部署方式的分类描述:百度百科的http://baike.baidu.com/view/51184.htm分三类:路由模式桥接模式服务直接返回模式51cto的一篇博客:http://virtualadc.blog.51cto.com/3027116/611592分四类:串接路由模式(Routed)单臂模式(One-arm)透明模式(Transpa......
  • 部署zabbix5
    部署zabbix5.0前言检查防火墙是否关闭vim/etc/selinux/configSELINUX=disabled内存4G为好配置好阿里yum源实验步骤获取zabbix的下载源rpm-Uvhhttps://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm更换za......
  • 本地部署AI知识库
    前言之前使用了多个基于向量库+chatGPT本地知识库产品,大概分析和比较了一下:使用目前云服务产品的主要的缺陷主要是数据存储在云端,存在一些安全上的问题,思考如何部署本地的AI知识库,目前的选择有两个:使用本地向量库+本地大模型,数据完全私有,如基于langchain+ChatGLM的本地知识库......
  • 将前端优化到最低:Web应用程序和移动应用程序最佳实践
    目录1.引言2.技术原理及概念3.实现步骤与流程4.应用示例与代码实现讲解4.1.应用场景介绍4.2.应用实例分析4.3.核心代码实现4.4.代码讲解说明将前端优化到最低:Web应用程序和移动应用程序最佳实践随着移动应用程序和Web应用程序的普及,前端优化已经成为开发团队中至关重要......