運維 ansible 使用

2021-10-02 02:04:36 字數 3115 閱讀 2029

配置host檔案

# /etc/ansible/hosts

[test]

192.168.56.11

配置ssh免密登陸

ssh-keygen -t dsa -p '' -f ~/.ssh/id_dsa

cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

連通性測試

ansible all -m ping

# 指定使用者

ansible all -m ping --user=root

這是命令列工具

適用於業務變更,簡單的無邏輯的,如果複雜情況使用playbook.

# 列出目標主機 /root 下目錄

ansible test -m shell -a "ls /root" --user=root

# 使用密碼

ansible test -m shell -a "ls /root" --user=root --ask-pass

# 其他

定義主機關係的檔案

預設路徑為/etc/ansible/hosts

檔案格式為 ini

# 配置方式1

[test] # 組名

192.168.56.11

# 配置方式2

test ansible_ssh_port=22 ansible_ssh_host=192.168.56.13 ansible_ssh_user=root

[node]

test

# 配置方式3

[websrv]

www[01:50].example.com

[databases]

db-[a:f].example.com

# 配置 /etc/ansible/hosts

# 測試連通性

ansible test -m ping

# 安裝mariadb,為執行了2次才好

ansible test -m yum -a "name=mariadb-server state=latest"

# 啟動和暫停 systemctl start mariadb | systemctl stop mariadb

ansible test -m systemd -a "name=mariadb state=started"

ansible test -m systemd -a "name=mariadb state=stopped"

# 驗證是否啟動

ansible test -m shell -a "ps -ef | grep mysql |grep -v grep"

編寫playbook為yaml格式

# test.yml

-hosts

: test

remote_user

: root # 使用者

tasks:-

name

: hello world # 任務名字

shell

: ls /root # 執行的模組和引數

# 執行

ansible-playbook test.yml

playbook 基本結構

host: 被操作的機器

remote_user: 登入機器的使用者

tasks: 需要在機器上執行的任務

vars:

com: /root

使用的時候使用 "}"

com: ls /root 這個時候必須使用雙引號,其他的情況可以省略雙引號

# bool值

vars:

epic: true

# ture/false

# 非not epic

# when

# with_items 迴圈語句關鍵字

# vim init_flask.yml

---# 其實位置

-hosts

: test

remote_user

: root

become

:true

# 當前非root使用者,且ssh免密配置完成

tasks:-

name

: install python for centos # 當前任務名稱

yum:

name

: "}" # yum安裝軟體包的名稱,迴圈元素

state

: installed

with_items

:- python-devel

- python-setuptools

when

: ansible_distribution == "centos" # 必須是centos

-name

: install python for ubuntu

apt:name

:"}"

state

: latest

update_cache

: yes

with_items

:- libpython-dev

- python-setuptools

when

: ansible_distribution == "ubuntu"

-name

: install pip

shell

: easy_install pip

-name

: pip install flask and redis

pip:name

:"}"

with_items

:- flask

- redis

# ansible-playbook init_flask.yml

python運維 ansible迴圈

有可能在乙個任務中,可能要做很多事情,例如建立多個使用者,安裝很多個包等,那麼就有可能用到迴圈。重複的任務可以用下面的方式 name add several users user name state present groups wheel with items testuser1 testuse...

運維工具ansible 安裝篇

安裝ansible之後,不需要啟動或執行乙個後台程序,或是新增乙個資料庫.只要在一台電腦 可以是一台筆記本 上安裝好,就可以通過這台電腦管理一組遠端的機器.在遠端被管理的機器上,不需要安裝執行任何軟體,因此公升級ansible版本不會有太多問題 如果你已經基於ansible開發大量模組,你最好一直使...

自動化運維ansible

sever1 172.25.60.1 server2 172.25.60.2 server3 172.25.60.3 etc ansible ansible.cfg 主配置檔案,配置ansible工作特性 etc ansible hosts 主機清單 etc ansible roles 存放角色的目...