飛天使-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.pswp.cn/news/213589.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/213589.shtml
英文地址,請注明出處:http://en.pswp.cn/news/213589.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

大公司求我用Kotlin寫個通用爬蟲模板

bug虐我千百遍,我待他如初戀。每次深夜挑燈都是我與bug較量的時間。今天我要說的就是寫一個爬蟲模版,自動抓取百度圖片的教程,這次使用Kotlin編寫的爬蟲程序在Scrapy框架下完成的,如有不足歡迎指正。 首先,使用Kotlin編…

Mybatis-Plus源碼解析之@MapperScan(一)

group : com.baomidou version:3.5.2.2-SNAPSHOT baomidou官網可以從快速開始了解到,除了配置數據源,最重要的就是MapperScan 注解,在 Spring Boot 啟動類中添加 MapperScan 注解,掃描 Mapper 文件夾。 MapperScan 按照慣例&…

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億元

商用空調一直以來都沒有一個相對比較明確的概念,一直以來被認為是制冷空調市場的一個細分子行業。現在比較一致的觀點是,可以納入商用空調范疇的產品可以包括戶式中央空調產品、部分傳統中央空調產品以及部分家用空調。商用空調已普遍采用直流變頻領先技…

網絡計算機模擬實現

今天給大家說說前幾天完成的一個模擬的網絡計算機吧,雖然計算機的模擬實現的原理很簡單,但是如果要想寫乘網絡的,個人認為是不簡單的。基本上算是包涵了套接字編程的三分之一的知識點,此處的套接字編程指的是在理解TCP/IP五層協議…

泡沫玻璃市場分析:預計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…

在高數據量中如何優化MySQL的Group by語句?

在實際開發環境中,MySQL的GROUP BY操作的優化需要結合具體的業務場景和數據特點。以下是一些建議,可以幫助你在實際開發中優化GROUP BY查詢: 使用合適的索引: 確保GROUP BY和ORDER BY中的列上存在索引。這有助于加速分組和排序操作…

計算機畢業設計 基于SpringBoot的電動車租賃系統的設計與實現 Java實戰項目 附源碼+文檔+視頻講解

博主介紹:?從事軟件開發10年之余,專注于Java技術領域、Python人工智能及數據挖掘、小程序項目開發和Android項目開發等。CSDN、掘金、華為云、InfoQ、阿里云等平臺優質作者? 🍅文末獲取源碼聯系🍅 👇🏻 精…