飞天使-linux操作的一些技巧与知识点4

文章目录

        • ansible
        • 配置文件的优先级
        • 尝试开始进行操作
        • ansible常用模块
        • ansible 的playbook
        • 示例
        • 安装php
        • playbook中变量的引用

ansible
yum install -y ansible 
测试是否可用 ansible localhost -m ping
/etc/ansible/ansible.cfg :主配置文件,配置 ansible 工作特性
/etc/ansible/hosts :配置主机清单文件
/etc/ansible/roles/ :存放 ansible 角色的目录主配置文件存在 /etc/anible/ansible.cfg
指定特权用户
[privilege_escalation]
become=True
become_method=sudo
become_user=user
become_ask_pass=Falseansible;adhoc;playbook;tasks;Roles;Roles方式编排web集群架构;
配置文件的优先级
1) 最先查找 $ANSIBLE_CONFIG 变量
2) 其次查找当前项目目录下 ansible.cfg
3) 然后查找用户家目录下的 .ansible.cfg
4) 最后查找 /etc/ansible/ansible.cfgInventory 文件主要用来填写被管理主机以及主机组信息;(逻辑上定义);
默认 Inventory 文件为 /etc/ansible/hosts ;
当然也可以自定义一个文件,当执行 ansible 命令时使用 -i 选项指定 Inventory
文件位置;
配置主机清单
[webservers]
172.16.1.7
172.16.1.8 ansible_become=yesansible_become=yes 这个的意思是加上sudo
尝试开始进行操作
ad-hoc执行步骤
1.加载自己的配置文件,默认 /etc/ansible/ansible.cfg ;
2.查找对应的主机配置文件,找到要执行的主机或者组;
3.加载自己对应的模块文件,如 command ;
4.通过 ansible 将模块或命令生成对应的临时 py 文件,并将该文件传输至远
程服务器对应执行用户 $HOME/.ansible/tmp/ansible-tmp-number/XXX.PY ;
5.执行用户家目录的 `` 文件;
6.给文件 +x 执行;
7.执行并返回结果;
8.删除临时 py 文件, sleep 0 退出;使用 ad-hoc 执行一次远程命令,注意观察返回结果的颜色;
绿色: 代表被管理端主机没有被修改
黄色: 代表被管理端主机发现变更
红色: 代表出现了故障,注意查看提示

在这里插入图片描述

ansible常用模块
command模块
[root@manger ~]# ansible localhost -m command -a 'chdir=/root
echo $PWD'ansible localhost -m command -a
'creates=/data/file ifconfig eth0'shell 模块
参数 选项 含义
chdir chdir /opt 执行ansible时,切换到指定的目录
creates creates /data/file 如果文件存在,则跳过执行
removes removes /data/file 如果文件存在,则执行
ansible localhost -m shell -a "ifconfig eth0|awk
'NR==2' "scripts 模块ansible webservers -m script -a "/data/yum.sh"copy模块
ansible webservers -m copy -a "src=./httpd.conf
dest=/etc/httpd/conf/httpd.conf owner=root group=root mode=644"file模块ansible webservers -m file -a
"path=/tmp/foo.conf state=touch mode=666"ansible webservers -m file -a "path=/tmp/foo
state=directory mode=777"
ansible webservers -m file -a "path=/tmp/foo
state=directory owner=root group=root mode=777 recurse=yes"等模块,有很多平时用不到,这里做一个大概记录
ansible 的playbook
playbook 是一个 由 yaml 语法编写的文本文件,它由 play 和 task 两部分组
成。
play : 主要定义要操作主机或者主机组
task :主要定义对主机或主机组具体执行的任务,可以是一个任务,也可以是多个
任务(模块)
总结: playbook 是由一个或多个 play 组成,一个 play 可以包含多个 task 任
务。
可以理解为: 使用多个不同的模块来共同完成一件事情。1) playbook 是对 AD-Hoc 的一种编排方式。
2) playbook 可以持久运行,而 Ad-Hoc 只能临时运行。
3) playbook 适合复杂的任务,而 Ad-Hoc 适合做快速简单的任务。
4) playbook 能控制任务执行的先后顺序。语法 描述
缩进 YAML使用固定的缩进风格表示层级结构,每个缩进由两个空格组成, 不能
使用tabs
冒号 以冒号结尾的除外,其他所有冒号后面所有必须有空格。
短横线
表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进级别
作为同一列表。
示例
$cat installed_httpd.yml
#1.定义play
#2.定义task、(Installed、Configure、Init、Systemd)- hosts: webserverstasks:- name: Installed Httpd Serveryum:name: httpdstate: present- name: Configure Httpd Servercopy:src: ./httpd.conf.j2dest: /etc/httpd/conf/httpd.confowner: "root"group: "root"mode: '0644'backup: yesnotify: Restart Httpd Server- name: Init Httpd Servercopy:src: ./index.html.j2dest: /var/www/html/test.html- name: Systemd Httpd Serversystemd:name: httpdstate: startedenabled: yeshandlers:- name: Restart Httpd Serversystemd:name: httpdstate: restarted上面是用root 用户执行的
下面是用普通用户执行
- hosts: webserversbecome: truebecome_user: roottasks:- name: Installed Httpd Serveryum:name: httpdstate: present- name: Configure Httpd Servercopy:src: ./httpd.conf.j2dest: /etc/httpd/conf/httpd.confowner: "nouser"group: "nouser"mode: '0644'backup: yesnotify: Restart Httpd Server- name: Init Httpd Servercopy:src: ./index.html.j2dest: /var/www/html/test.htmlowner: "nouser"group: "nouser"mode: '0644'- name: Systemd Httpd Serversystemd:name: httpdstate: startedenabled: yeshandlers:- name: Restart Httpd Serversystemd:name: httpdstate: restarted检查语法 :ansible-playbook installed_httpd.yml --
syntax-check执行命令: ansible-playbook installed_httpd.yml 
安装php
cat install_nginx_php.yml
#1.安装nginx
#2.安装php
#3.添加nginx虚拟主机,触发重启
#4.配置php,连接redis;触发重启
#5.部署phpadmin;、- hosts: webserversvars:web_site_directory: /ansible/admin2tasks:- name: Installed Nginx PHP Serveryum:name: "{{ item }}"state: presentloop:- nginx- php71w- php71w-cli- php71w-common- php71w-devel- php71w-embedded- php71w-gd- php71w-mcrypt- php71w-mbstring- php71w-pdo- php71w-xml- php71w-fpm- php71w-mysqlnd- php71w-opcache- php71w-pecl-memcached- php71w-pecl-redis- php71w-pecl-mongodbtags: Install- name: Create Nginx Process Runtime Groupgroup:name: wwwgid: 666tags: Install- name: Create Nginx Process Runtime Useruser:name: wwwuid: 666create_home: notags:- Install- Configure- name: Configure Nginx Nginx.confcopy:src: ./conf/nginx.conf.j2dest: /etc/nginx/nginx.confowner: 'root'group: 'root'mode: '0644'notify: Restart Nginx Servertags: Configure- name: Configure Nginx VHosts ansible.oldxu.com;template:src: ./conf/ansible.oldxu.com.conf.j2dest: /etc/nginx/conf.d/ansible.oldxu.com.confnotify: Restart Nginx Server- name: Check Web Configureshell:cmd: /usr/sbin/nginx -tregister: Check_Nginxchanged_when:- Check_Nginx.stdout.find('successful')- false- name: Configure php php.inicopy:src: "{{ item.src }}"dest: "{{ item.dest }}"mode: "{{ item.mode }}"loop:- { src: "./conf/php.ini.j2", dest: "/etc/php.ini" , mode: "0644" }- { src: "./conf/php-fpm.d.www.conf.j2", dest: "/etc/php-fpm.d/www.conf" , mode: "0644" }notify: Restart PHP Server- name: Systemd Nginx And PHP Serversystemd:name: "{{ item }}"state: startedenabled: yesloop:- nginx- php-fpm# download code- name: Create Web Site Directoryfile:path: "{{ web_site_directory }}"state: directoryowner: 'www'group: 'www'mode: '0755'- name: Unarchive Myadmin Codeunarchive:src: file/phpmyadmin.zipdest: "{{ web_site_directory }}"owner: 'www'group: 'www'handlers:- name: Restart Nginx Serversystemd:name: nginxstate: restarted- name: Restart PHP Serversystemd:name: php-fpmstate: restarted
playbook中变量的引用
变量提供了便捷的方式来管理 ansible 项目中的动态值。 比如 nginx-1.12 ,可能
后期会反复的使用到这个版本的值,那么如果将此值设置为变量,后续使用和修改都
将变得非常方便。这样可以简化项目的创建和维护;在 Ansible 中定义变量分为如下三种方式:
1) 通过命令行传递变量参数定义
2) 在play文件中进行定义变量
2.1) 通过vars定义变量
2.2) 通过vars_files定义变量
3) 通过inventory在主机组或单个主机中设置变量
3.1) 通过host_vars对主机进行定义
3.2) 通过group_vars对主机组进行定义vars 形式的变量
- hosts: webserversvars:web_packages: httpdftp_packages: vsftpdtasks:- name: Output Variablesdebug:msg:- "{{ web_packages }}"- "{{ ftp_packages }}"输出结果为"msg": ["httpd","vsftpd"]在 playbook 中使用 vars_files 指定文件作为变量文件,好处就是其他的
playbook 也可以调用;
[root@ansible project1]# cat vars.yml
web_packages: httpd
ftp_packages: vsftpd- hosts: webserversvars_files:- ./vars.ymltasks:- name: Output Variablesdebug:msg:- "{{ web_packages }}"- "{{ ftp_packages }}"playbook 传送多个变量
ansible-playbook f5.yml -i hosts -e
"web_packages=GeoIP" -e "ftp_packages=telnet"

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

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

相关文章

大公司求我用Kotlin写个通用爬虫模板

bug虐我千百遍,我待他如初恋。每次深夜挑灯都是我与bug较量的时间。今天我要说的就是写一个爬虫模版,自动抓取百度图片的教程,这次使用Kotlin编写的爬虫程序在Scrapy框架下完成的,如有不足欢迎指正。 首先,使用Kotlin编…

angular form 组件、双向绑定;反应式表单

1.使用双向绑定,以及angular的表单提交功能 app.moudle中引入 双向绑定 [(ngModel)]"text" ​​​​​​​ 效果 提交表单 2.反应式表单 在app.module.ts中引入在组件中引入,并放在一个变量里 在初始化时实列化这个module 定义规则 在html…

Linux:环境变量

目录 1.基本变量 2.通过代码获取环境变量 2.1 main传参 2.2 全局变量environ 2.3 系统调用getenv() 3.在脚本文件中添加环境变量 4.环境变量通常是具有全局属性 1.基本变量 环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数…

商用中央空调市场分析:预计2028年将达到628亿元

商用空调一直以来都没有一个相对比较明确的概念,一直以来被认为是制冷空调市场的一个细分子行业。现在比较一致的观点是,可以纳入商用空调范畴的产品可以包括户式中央空调产品、部分传统中央空调产品以及部分家用空调。商用空调已普遍采用直流变频领先技…

泡沫玻璃市场分析:预计2028年将达到14亿美元

泡沫玻璃最早是由美国匹兹堡康宁公司发明的,是由碎玻璃、发泡剂、改性添加剂和发泡促进剂等,经过细粉碎和均匀混合后,再经过高温熔化,发泡、退火而制成的无机非金属玻璃材料。它是由大量直径为1~2毫米的均匀气泡结构组成。其中吸声…

Linux 常用命令----mktemp 命令

文章目录 基本用法实例演示高级用法注意事项 mktemp 命令用于创建一个临时文件或目录,这在需要处理临时数据或进行安全性测试时非常有用。使用 mktemp 可以保证文件名的唯一性,避免因文件名冲突而导致的问题。 基本用法 创建临时文件: 命令 mktemp 默认…

Go语言基础知识学习(一)

Go基本数据类型 bool bool型值可以为true或者false,例子: var b bool true数值型 类型表示范围int8有符号8位整型-128 ~ 127int16有符号16位整型-32768 ~ 32767int32有符号32位整型-2147783648 ~ 2147483647int64有符号64位整型uint8无符号8位整型0 ~ 255uint16…

优思学院|如何建立公司运营指标体系?如何推行六西格玛改进运营指标?

关键绩效指标 (KPI) 是测量您团队或组织朝重要商业目标进展表现如何的量化指标,组织会在多个层面使用 KPI,这视乎您想要追踪何指标而定,您可以设定全组织的、特定团队的、或甚至是个人 KPI。 良好的KPI能让公司管理者掌握组织的营运是否进度…

使用React 18、Echarts和MUI实现温度计

关键词 React 18 Echarts和MUI 前言 在本文中,我们将结合使用React 18、Echarts和MUI(Material-UI)库,展示如何实现一个交互性的温度计。我们将使用Echarts绘制温度计的外观,并使用MUI创建一个漂亮的用户界面。 本文…

点评项目——分布式锁

2023.12.10 集群模式下的并发安全问题及解决 随着现在分布式系统越来越普及,一个应用往往会部署在多台机器上(多节点),通过加锁可以解决在单机情况下的一人一单安全问题,但是在集群模式下就不行了。见下图&#xff1a…

在 Android WebView 中实现和 JavaScript 的互操作

前言 在 APP 中内嵌一个 H5 来实现特定的业务功能已经是非常成熟且常用的方案了。 虽然 H5 已经能够实现大多数的需求,但是对于某些需求还是得依靠原生代码来实现然后与 JavaScript 进行交互,例如我目前所负责的项目就是一个 “智能硬件” 设备&#x…

【PyTorch】卷积神经网络

文章目录 1. 理论介绍1.1. 从全连接层到卷积层1.1.1. 背景1.1.2. 从全连接层推导出卷积层 1.2. 卷积层1.2.1. 图像卷积1.2.2. 填充和步幅1.2.3. 多通道 1.3. 池化层(又称汇聚层)1.3.1. 背景1.3.2. 池化运算1.3.3. 填充和步幅1.3.4. 多通道 1.4. 卷积神经…

实现React18加TS,解决通用后台管理系统,实战方案落地有效实践经验

随着前端技术的不断发展和更新,使用React 18结合TypeScript(TS)来构建通用后台管理系统已成为一种常见的选择。本文将介绍如何在项目中应用React 18和TS,并分享一些实战方案的有效实践经验。 一、搭建React 18 TS项目 首先&…

12.2每日一题(1无穷型幂指函数:二倍角公式+三部曲+等价无穷小代换(只有整体的因子不为0才能先算出来))

注意:求极限不能想先算哪里就先算哪里,只有整体的因子不为0才能先算出来,部分不为0不可以先算

外贸老业务也棘手的一个问题

这几天有2个老业务都被一个类同的问题缠住了。 客户定购了三台车,由于是非常规要求所以我建议收取全款或者最少收50%的定金。但是业务员为了当月业绩或者为了拿到就收了客户20% 或者30% ,定金收到了,我也不好再逼着业务员去加收定金。 订单就…

记录 | ubuntu上安装fzf

在 ubuntu 上采用命令行安装 fzf 的方式行不通 指的是采用下面的方式行不通: sudo apt install fzf # 行不通 sudo snap install fzf --classic # 行不通正确的安装方式是: ● 到 fzf 的 git 仓库:https://github.com/junegunn/fzf/re…

计算机毕业设计 基于SpringBoot的电动车租赁系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

场景示例:有赞商城 × 微盛企微管家,助力零售企业,实现私域运营自动化

1 场景描述 在零售行业内,线上渠道已经是零售行业的主要销售渠道,大多数零售企业都会将产品上架到有赞商城,并使用微盛企微管家系统进行客户管理和服务,希望能对客户画像进行精细化管理,以提升销售和服务效率。 然而&a…

2023年最新prometheus + grafana搭建和使用+gmail邮箱告警配置

一、安装prometheus 1.1 安装 prometheus官网下载地址 sudo -i mkdir -p /opt/prometheus #移动解压后的文件名到/opt/,并改名prometheus mv prometheus-2.45 /opt/prometheus/ #创建一个专门的prometheus用户: -M 不创建家目录, -s 不让登录 useradd…

女士内衣市场分析:预计2028年将达到643.08亿美元

内衣 (英文名:Underwear),是指贴身穿的衣物。内衣有保暖及污秽的危害作用,有时会被视为性征。女士内衣行业生产的主要原料是各类织布或无纺布,成分有海绵、边、定型纱、骨胶、肩带等,布面料在内衣企业的生产成本中所占比重较大。女…