Ansible自动化运维实战

一、abstract简介

        ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric) 的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能.无客户端。我们要学一些Ansible的安装和一些基本概念,然后我们会开始研究一些真正有意思的东西 - plavbook,配置管理,部署以及语法编排.我们将会学习如何使用/usr/bin/ansible执行ad-hoc并行命令,我们还会学习ansible的核心有什么样的模块可供使用.当然以后你也可以写你自己的模块。

二、install部署

1. dns resolve

环境:

        ansible服务器:

                192.168.64.2

        ansible客户机:

                192.168.64.3

                192.168.64.4

                192.168.64.5

ansible服务器

        域名解析

                vim  /etc/hosts

                192.168.64.2   ansible

                192.168.64.3   host1

                192.168.64.4   host2

                192.168.64.5   host3

ansible客户机

        无需配置 

                IP

                YUM源

2.install  ansible

yum  install  -y  epel-release   可配置阿里的

yum  install  -y  ansible

检测是否安装成功

rpm  -ql  ansible                列出ansible所有文件

rpm  -qc  ansible               查看配置文件

ansible  --help                   查看ansible帮助

ansible-doc   -l                  看所有模块

ansible-doc  -s  yum          看yum模块

三、ssh-key可选

1.免密码ssh-key的方式

2.ssh-keygen的方式

3.ssh-copy-id  IP地址     推送密钥

四、ansible基础

1.定义主机清单

vim  /etc/ansible/hosts

host1

host2

host3

没有host4注意

2.测试连通性

ansible  localhost  -m  ping    -m指定模块,ping只是其中的一个模块,还有shell,yum等

3.简洁输出

ansible  localhost  -m  ping  -o

4.know_hosts

 ansible  host1 -m  ping  成功,因为有免密

ansible  host2 -m  ping   失败,没有免密

ansible  host2 -m  ping  -u  root  -k   -o     增加用户名选项,和密码选项

去掉(yes/no选项)的询问

vim  /etc/ssh/ssh_config

StrictHostKeyChecking  no

systemctl  restart  sshd

5.错误示范

ansible  host4 -m  ping  -u  root  -k   -o    失败,主机清单未配置主机

6.请注意ping和ssh

ping    ICMP:网络消息管理协议

关闭host2主机的sshd进程,进行ping连通性测试

再使用ansible对host2进行连通性测试,却是失败的

结论:ansible的ping,是餐车ssh程序是否连接,不是icmp协议

ansible  host2 -m  ping  -u  root  -k   -o 

五、inventory主机清单

含义:清查,存货清单,财产目录,主机清单

1.增加主机组

官方链接:

vim  /etc/ansible/hosts

[webserver]

host1

host2

host3

host4

ansible  webserver  -m  ping  -o                验证组被调用

2.增加用户名,密码

vim  /etc/ansible/hosts

#为了方便管理都是添加免密

[webserver]

host1   ansible_ssh_user='root'   ansible_ssh_pass='666666'

host2    ansible_ssh_user='root'   ansible_ssh_pass='666666'

host3    ansible_ssh_user='root'   ansible_ssh_pass='666666'

host4     ansible_ssh_user='root'   ansible_ssh_pass='666666'

host[1:4]   ansible_ssh_user='root'   ansible_ssh_pass='666666'

ansible  webserver  -m  ping  -o                验证

思考主机和用户名和密码不同怎么设置?  分别设置

3.增加端口

将host4的sshd端口修改为2222

vim   /etc/ssh/sshd_config

Port   2222   (1024-65535)最好

systemctl restart  sshd

登录的话需要加上端口 ssh  root@192.168.64.3  -p  2222

ansible  webserver  -m  ping  -o                验证,失败因为端口已改

vim  /etc/ansible/hosts 

[webserver]

host[1:3]   ansible_ssh_user='root'   ansible_ssh_pass='666666'

host4     ansible_ssh_user='root'   ansible_ssh_pass='666666'  ansible_ssh_port='2222'

liunx进行安全加固?(面试题)

修改ssh默认端口号,禁用超管,修改yum源等等

4.组:变量

ansible内部变量可以帮助我们简化主机清单的设置

vim   /etc/ansible/hosts

[webserver]

host[1:3]  

host4       ansible_ssh_port='2222'

[webserver:vars]                vars代表的是变量

ansible_ssh_user='root'   

ansible_ssh_pass='666666'

常用变量

5.子:分组

将不同的组进行组合

vim   /etc/ansible/hosts

[apache]

host[1:2]

[nginx]

host[3:4]

[webserver:children]                children 子分组  

apache

nginx

[webserver:vars]                vars代表的是变量

ansible_ssh_user='root'   

ansible_ssh_pass='666666'

6.自定义主机列表

vim  hostlist   

[dockers]

host[1:2]

[dockers:vars]

ansible_ssh_user='root'   

ansible_ssh_pass='666666'

ansible  -i  hostlist  dockers  -m  ping  -o    -i连接外部主机清单

六、Ad-Hoc点对点模式

简介:临时的,在ansible中是指需要快速执行的单条命令,并且不需要保存的命令,对于复杂的命令则为playbook

1.shell模块

ansible-doc    shell

ansible   webserver   -m   shell   -a  'hostname'   -o   调用hostname  -o间接执行

ansible   webserver   -m   shell   -a  ‘hostname’   -o   -f  2   指定线程数

ansible   webserver   -m   shell   -a  'yum  -y  install  httpd'  -o     安装程序

ansible   webserver   -m   shell   -a  'uptime'        查询系统负载

2.复制模块

帮助  ansible-doc  copy

案例   快速拷贝东西到别的机器上(机器多,人少)

ansible  webserver  -m  copy  -a  'src=/etc/hosts dest=/tmp/2.txt  owner=root  group=bin  mode=777'   src=source 资源   dest=destination目标地  owner属主  group属组  mode权限

ansible  webserver  -m  copy  -a  'src=/etc/hosts dest=/tmp/2.txt  owner=root  group=bin  mode=777  backup=yes'    backup如果内容不同不覆盖,重新建一个文件 

3.用户模块

帮助   ansible-doc  user

3.1创建用户

ansible   webserver   -m  user  -a  'name=qianfeng  state=present'    创建present

3.2修改密码

1.生成加密密码  

echo  '512050951'   |  openssl   passwd        -1                 -stdin      生成加密密码值

                                   加密          密码       密码类型           标准输入输出,不等用户回话

2.修改密码

ansible   webserver   -m   user   -a    'name=qianfeng  password="把上个命令生成密码放这"

3.3修改shell

ansible   webserver   -m   user   -a    'name=qianfeng  shell=/sbin/nologin  append=yes'  

                                                                                                                        追加修改的意思

3.4删除用户

ansible   webserver   -m  user  -a  'name=qianfeng  state=absent'     删除absent

4.软件包管理

帮助   ansible-doc   yum

ansible    host1   -m   yum   -a   'name="*"  state=latest'   升级所有包

ansible    host2   -m   yum   -a   'name="http"  state=latest'   安装apache

5.服务模块

ansible-doc   service  帮助

ansible   host2  -m   service   -a   'name=httpd  state=started'    开启http服务

ansible   host2  -m   service   -a   'name=httpd  state==started   enabled=yes'   开机自启

ansible   host2  -m   service   -a   'name=httpd  state=stopped'        停止服务

ansible   host2  -m   service   -a   'name=httpd  state=restarted'        重启

ansible   host2  -m   service   -a   'name=httpd  state=started  enabled=no'   关闭开机自启

6.文件模块

帮助  ansible-doc  file

ansible   host1   -m   file   -a  'path=/tmp/88.txt   mode=777  state=touch'   创建文件

ansible   host1   -m   file   -a  'path=/tmp/99   mode=777  state=directory'   创建目录

7.收集模块

帮助  ansible-doc   setup

ansible    host3    -m   setup

ansible    host3    -m   setup   -a    'filter=ansible_all_ipv4_addresses'    filter过滤

七、YMAL-YMAL Aint't Markup Language 非标记语言

语法

列表

fruits:

        - Apple

        - Orange

        - pear

字典

martin:

        name:Martin  Devoper

        job:Developer

        skill:Elite

示例:需求:通过YAML编写一个简单的剧本,完成web的配置,部署,启动的全过程

ansible服务器:

1.准备工作

        ansible  all  -m  yum  -a  'name=httpd  state=removed'   -o  卸载以免报错看不懂

        yum install  -y  httpd                准备配置文件

        mkdir  apache

        cd   apache

        cp   -rf   /etc/httpd/conf/httpd.conf   .    考到当前目录下

        grep   '^Listen'   httpd.conf                     Listen  8080

2.编写剧本-----对齐很重要

        vim  apache.ymal

                - hosts: host2                减号后面一定要有空格,冒号后边有空格

                  tasks:                        tasks任务,只有一个的话在tasks后边写

                  - name: install  apache   packages                name描述信息

                    yum:  name=httpd state=present                

                  - name: copy  apache  conf

                    copy: src=./httpd.conf dest=/etc/httpd/conf/httpd.conf

                  - name: ensure  apache  is  running

                    service: name=httpd state=started enabled=yes

3.测试

        ansible-playbook   apache.yaml   --syntax-check        剧本apache.yml  语法测试校验

        ansible-playbook   apache.yaml   --list  -tasks             列出来都有什么任务

        ansible-playbook   apache.yaml   --list  -hosts             列出主机

        ansible-playbook   apache.yaml                                   执行剧本

        检查一下

        192.168.64.3:8080

4.handlers

        如果配置发生变化(httpd.connf),系统需要重启

八、Role 角色扮演

简介:roles是在ansible中,playbooks的目录组织结构,将代码或文件进行模块化,成为roles的文件目录组织结构,易读,代码可重用,层次清晰

目标:通过role远程部署ngnix并配置

1.目录结构

tree  roles/

准备目录结构

mkdir  roles/nginx/{files,handlers,tasks,templates,vars} -p

touch roles/site.yaml  roles/nginx/{handlers,tasks,vars}/main.yaml

echo 1234>roles/nginx/files/index.html

yum install -y nginx && cp /etc/nginx/nginx.conf  roles/ngnix/templates/nginx.conf.j2

2.编写任务

vim  roles/nginx/tasks/main.yaml

        

        ---                

        - name: install epel-release package               

          yum:  name=epel-release state=latest                

        - name: install nginx package

          yum:  name=nginx state=latest 

        - name: copy index.html

          copy: src=index.html dest=/usr/share/nginx/html/index.html

        - name:copy nginx.conf template

          template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf        看做copy

          notify: restart nginx

        - name: make sure nginx service running

          service: name=nginx stat=started enabled=yes

3.准备配置文件

4.编写变量

5.编写处理程序

6.编写剧本

7.实施

九、Homework

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

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

相关文章

【劳德巴赫 Trace32 高阶系列 4 -- Trace32 JTAG 常用命令】

文章目录 Trace32 JTAG 常用命令JTAG.PINJTAG 信号值读取JTAG.SHIFTREGExampleJTAG.SHIFTTDIExampleJTAG.SHIFTTMSExampleJTAG.PROGRAM.SVFTrace32 JTAG 常用命令 JTAG (Joint Test Action Group) 是一种常用的调试和测试标准,用于在电子系统的芯片和板级测试中。在JTAG标准中…

2024最新版MongoDB安装使用指南

2024最新版MongoDB安装使用指南 Installation and Usage Guide of the Latest MongoDB Community Edition in 2024 By JacksonML MongoDB is a document database with the scalability and flexibility that you want with the querying and indexing that you need. – mon…

gitlib部署及应用

一. 下载源网址 Index of /gitlab-ce/yum/el7/ | 清华大学开源软件镜像站 | Tsinghua Open Source MirrorIndex of /gitlab-ce/yum/el7/ | 清华大学开源软件…

2024-01-06-AI 大模型全栈工程师 - 大模型时代的 AI 产品新挑战

摘要 2024-01-06 周六 杭州 晴 课程内容 1. 上一代 AI 能做什么? 2. AI 的能力演进 3. LLMS 带来了哪些变化 4. LLMS 存在哪些问题 5. LLMS 落地的三个关键要素 6. LLMS 短期落地的方向-内容生成 7. LLMS 中期落地的方向-智能体 8. 从 LLMS 到可落地的应用 9. LL…

八种Flink任务监控告警方式

目录 一、Flink应用分析 1.1 Flink任务生命周期 1.2 Flink应用告警视角分析 二、监控告警方案说明 2.1 监控消息队中间件消费者偏移量 2.2 通过调度系统监控Flink任务运行状态 2.3 引入开源服的SDK工具实现 2.4 调用FlinkRestApi实现任务监控告警 2.5 定时去查询目标库…

【数据结构(C语言)】树、二叉树详解

目录 文章目录 前言 一、树的概念及结构 1.1 树的概念 1.2 树的相关概念 1.3 树的表示 1.4 树在实际中的运用 二、二叉树的概念及结构 2.1 二叉树的概念 2.2 二叉树的基本形态 ​编辑2.3 特殊的二叉树 2.4 二叉树的性质 2.5 二叉树的存储结构 三、二叉树的顺序结…

堆溢出:深入理解与防范

在计算机安全领域中,堆溢出是一种常见的安全漏洞,它涉及到程序中的内存分配和管理。本文将深入探讨堆溢出的概念、原因以及防范措施。 首先,我们需要了解什么是堆。在许多编程语言中,如C和C,堆是用于动态内存分配的区…

adb push 将电脑中的文件传输到安卓开发板

1. adb remount 重新挂载设备的文件系统,以便可以对设备进行读写操作,通常情况下,安卓开发板在连接到计算机后,设备的文件系统会被挂载为只读文件系统,重新挂载后变成可读可写权限 C:\Users\Administrator>adb re…

高等数学:积分

本文主要参考: 【建议收藏】同济七版《高等数学》精讲视频 | 期末考试 | 考研零基础 | 高数小白_哔哩哔哩_bilibili 4.1.1.1 定积分引例_哔哩哔哩_bilibili 仅供本人学习使用。 积分是一个在多个领域都广泛使用的概念,特别是在数学和物理学中。 以下是积…

深入了解c语言字符串 2

深入了解c语言字符串 2 一 使用 scanf进行字符串的输入:1.1输入单词(不包含空格):1.2 输入带空格的整行文本:1.3 处理输入缓冲区:1.4 注意安全性: 二 使用 printf 字符串的输出:三 输…

春招秋招,在线测评到底难不难?

现在很多企业在春招的时候,都会有一个在线测评的环节,目的当然就是希望更加了解清楚毕业生的综合能力以及其他方面的素质,好让HR可以根据岗位筛选出能力达标的人才。所以,现在不少即将面对春招的大学毕业生,比较关心的…

uniapp中组件库Mask 遮罩层 的使用方法

目录 #平台差异说明 #基本使用 #嵌入内容 #遮罩样式 #API #Props #Events #Slot 创建一个遮罩层,用于强调特定的页面元素,并阻止用户对遮罩下层的内容进行操作,一般用于弹窗场景 #平台差异说明 AppH5微信小程序支付宝小程序百度小程…

没有外网Nginx如何配置如何开启https

判断是否支持open-ssl 在服务器执行如下命令 openssl version没有则安装open-ssl,由于服务器没有外网,可以离线安装openssl-3.0.1.tar.gz,我是在有网的服务器直接下载的,然后再上传到这台无网的服务器上 wget https://www.open…

C++内存管理与模板

C内存管理与模板 文章目录 C内存管理与模板前言:一.new和delete基本用法二.底层实现三.定位new四.模板4.1函数模板4.2调用选择4.3类模板4.4声明定义分离 前言: C的内存管理和C语言中动态内存分配是相似的,在这一篇我们会学到更符合面向对象的…

如何快速写出高效的软件测试用例

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 前言 编写测试用例的目的就是确保测试过程全面高效、有据可查。但要编写出高效的测试用例&#…

鸿蒙harmony--TypeScript基础语法

把青春献给身后那座辉煌的都市,为了这个美梦我们付出着代价 目录 一,基础类型 二,数组 三,any 四,变量的类型注释 五,函数 5.1 参数类型注解 5.2 返回类型注解 5.3 匿名函数 六,对象类型 可选属…

APP攻防-资产收集篇反证书检验XP框架反代理VPN数据转发反模拟器

知识点 1、APP资产-抓包突破&反模拟器 2、APP资产-抓包突破&反证书检验 3、APP资产-抓包突破&反代理VPN 章节点: 1、APP资产-内在提取&外在抓包 2、APP逆向-反编译&删验证&重打包 3、APP安全-存储&服务&组件&注册等 专题点&…

HDFS HA 之 HA 原理

1 ZKFC解析 HA(High Availability)是HDFS支持的一个重要特性,可以有效解决Active Namenode遇到故障时,将可用的Standby节点变成新的Active状态的问题,使集群能够正常工作。目前支持冷切换和热切换两种方式。冷切换通过手动触发,缺点是不能够及时恢复集群。实际生产中以应用…

2024年【危险化学品经营单位主要负责人】报名考试及危险化学品经营单位主要负责人免费试题

题库来源:安全生产模拟考试一点通公众号小程序 危险化学品经营单位主要负责人报名考试参考答案及危险化学品经营单位主要负责人考试试题解析是安全生产模拟考试一点通题库老师及危险化学品经营单位主要负责人操作证已考过的学员汇总,相对有效帮助危险化…

LeetCode:49. 字母异位词分组

49. 字母异位词分组 1)题目2)代码3)结果 1)题目 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs…