ansible遇到的需求與相關命令實現

2021-10-06 23:03:25 字數 2932 閱讀 8310

在ansible主機執行命令,保證只執行一次:

# 使用delegate_to

-name

: merge cache

shell

:"python /home/om/om/manager/script/logfetcher/merge_cache.py"

run_once

:true

delegate_to

: localhost

# 或 connection

-name

: merge cache

shell

:"python /home/om/om/manager/script/logfetcher/merge_cache.py"

run_once

:true

connection

: local

從遠端獲取檔案,收到的卻是資料夾:
# 這可能是檔名字尾不是常見字尾導致的,可以加上flat引數來保證發來的是檔案

fetch

:src

: /home/beas/logs/log_dir.cache

dest

: /home/om/logs/cache/

}_log_dir_new.cache

flat

: yes

想在遠端執行本地的乙個python指令碼,但script元件好像支援的是shell指令碼:
# 先在本地生成呼叫指令碼的引數

-name

: make dir to cmd

shell

:"python /home/om/om/manager/script/logfetcher/make_remote_cmdargs.py"

connection

: local

run_once

:true

register

: remote_cmd

# 再在遠端執行本地指令碼

# script 後可以直接加引數

# chdir 為執行指令碼前在遠端切換的目錄

# executable 指定為python

-name

: make dir cache on remote host

script

:"/home/om/om/manager/script/logfetcher/remote_cache_dirs.py }"

args

:chdir

:"/home/beas/logs"

executable

:"python"

建立資料夾:
-

name

: make remote cache path

file

:path

:"}"

state

: directory

只在乙個host上執行的命令:

在/etc/ansible/hosts中新增引數

# 可在ip後直接新增主機引數

[servers]

192.168.137.211 host=node1

192.168.137.212 host=node2

# 也可指定全域性引數

[servers:vars]

log_fetch_module_path=/home/om/om/manager/script/log_fetcher

remote_cache_dir=/home/beas/logs

local_logs_dir=/home/om/logs

上面給了每個主機標記,這時可以用when來過濾主機

-

name

: fetch log files

with_items

:"}"

fetch

:src

:"}"

dest

:"}"

flat

: yes

when

: host == item.host

獲取乙個shell命令或python命令的輸出:
-

name

: make dir to cmd

shell

:"python }/make_remote_cmdargs.py"

connection

: local

run_once

:true

register

: remote_cmd

使用時用.stdout來表示

}

從yaml檔案中讀配置

register後要加乙個ansible_facts中間變數來取

-

name

: prepare log file

include_vars

:dir

:"}"

files_matching

: temp.yml

register

: log_file -

name

: fetch log files

with_items

:"}"

檔案裡面長這樣

---

log_path

:beas_user_path

:&beas_user_path '/home/beas/'

module_path

:acaleph

: acaleph/log

gearup

: gearup/log

test_path

:'.'

pip相關操作與可能遇到的問題

安裝pip sudo apt get install python pip更新pip pip install upgrade pip更新某個庫 pip install upgrade pip install upgrade pip install protobuf 3.0.0更新所有庫 pip fr...

Ansible的部署與基本配置

1.什麼是ansible ansible是一款開源自動化平台,是乙個配置管理工具,自動化運維工具。ansible基於python開發,集合了眾多運維工具 puppet cfengine chef func fabric 的優點,實現了批量系統配置 批量程式部署 批量執行命令等功能。ansible是基...

ansible的簡單安裝與使用

ansible概述 是乙個配置管理系統 configuration management system 當下最流行的批量自動化運維工具之一.常用的運維工具 ssh puppet ruby ansible 無客戶端,中小規模 python saltstack master minion python ...