在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 ...