python
nginx
ansible-playbook [options] playbook.yml [playbook2 ...] -C, --check # 檢查,白跑,幹跑 -f FORKS, --forks=FORKS #用來作併發 --list-hosts # 列出主機列表 --syntax-check # 語法檢查
- 簡單用法web
- hosts: web tasks: - name: creategroup group: name=jamlee1 - name: cretaeuser user: name=jam1
- 傳參redis
- hosts: web tasks: - name: create{{ user }} user: name={{ user}}
- 方法一 shell
ansible-playbook -e 'user=jamlee1' p1.yml
- 方法二 (host文件)架構
vi /etc/ansible/hosts [db] 192.168.33.131 user=jam1 192.168.107.132 user=jam2
- 方法三 (host文件)併發
[db:vars] #表示組的參數 user=jam2
- 方法四dom
- hosts: db vars: - user: jam3 tasks: - name: create{{ user }} user: name={{ user}}
- 方法五ide
- hosts: db tasks: - name: sum shell: echo 7+8|bc register: user - name: createuser user: name={{user.stdout}}
傳參方式的優先級工具
-e > playbook vars > hosts文件
- setup 模塊用於收集遠程主機的一些基本信息。
ansible cache -m setup
ansible_all_ipv4_addresses # ipv4的全部地址 ansible_all_ipv6_addresses # ipv6的全部地址 ansible_date_time # 獲取到控制節點時間 ansible_default_ipv4 # 默認的ipv4地址 ansible_distribution # 系統 ansible_distribution_major_version # 系統的大版本 ansible_distribution_version # 系統的版本號 ansible_domain #系統所在的域 ansible_env #系統的環境變量 ansible_hostname #系統的主機名 ansible_fqdn #系統的全名 ansible_machine #系統的架構 ansible_memory_mb #系統的內存信息 ansible_os_family # 系統的家族 ansible_pkg_mgr # 系統的包管理工具 ansible_processor_cores #系統的cpu的核數(每顆) ansible_processor_count #系統cpu的顆數 ansible_processor_vcpus #系統cpu的總個數=cpu的顆數*CPU的核數 ansible_python # 系統上的python
ansible cache -m setup -a 'filter=*processor*' # 用於進行條件過濾。若是設置,僅返回匹配過濾條件的信息。 用到了正則
# 正則小結 * 匹配數量,表示0或者屢次 ? 匹配數量,表示0或者1次 . 除換行符之外的全部字符 + 至少一次 [123abc] 匹配內容,or () 分組 {m} 次數,出現m次 {m,} 至少m次 {m,n}出現m-n次
- 條件判斷
- when
- 不一樣的系統,版本,環境,用戶
- hosts: db remote_user: root tasks: - name: createfile copy: content="擡頭望明月" dest=/tmp/a.txt when: a=="3" - name: cratefile copy: content="低頭思故鄉" dest=/tmp/a.txt when: a=="4"
ansible-playbook -e 'a="3"' p6.yml
Ubuntu 安裝包的方式是apt-get
-
- hosts: web tasks: - name: installnginx yum: name=nginx - name: copyfile copy: src=/etc/nginx/nginx.conf dest=/etc/nginx/nginx.conf tags: copyfile - name: start service: name=nginx state=started
ansible-playbook -t copyfile p7.yml
-
- hosts: web tasks: - name: crateuser user: name={{item}} with_items: - jam11 - jam22 - jam33
- 嵌套循環
- hosts: web tasks: - name: crategroup group: name={{item}} with_items: - canglaoshi30 - canglaoshi31 - canglaoshi32 - name: createuser user: name={{item.name}} group={{item.group}} with_items: - {'name':jam40,'group':canglaoshi30} - {'name':jam41,'group':canglaoshi31} - {'name':jam42,'group':canglaoshi32}
- template:
- 根據模塊文件動態生成對應的配置文件
- hosts: web tasks: - name: installredis yum: name=redis - name: copyfile template: src=/etc/redis.conf dest=/etc/redis.conf - name: start service: name=redis state=started vi /etc/redis.conf 配置文件: bind {{ ansible_default_ipv4.address }}
copy和tamplate的區別 - copy模塊不替代參數 - template模塊替代參數
- 相對路徑: 在當前目錄下新建一個templates目錄,而後把文件放在templates目錄裏面
- hosts: web tasks: - name: installredis yum: name=redis - name: copyfile template: src=redis.conf dest=/etc/redis.conf - name: start service: name=redis state=started
- handlers
- 修改配置文件
- hosts: web tasks: - name: installredis yum: name=redis - name: copyfile template: src=redis.conf dest=/etc/redis.conf tags: copyfile notify: restart - name: start service: name=redis state=started handlers: - name: restart service: name=redis state=restarted
templates文件必須存放於templates目錄下,且命名爲 .j2 結尾 yaml/yml 文件需和templates目錄平級,目錄結構以下: ./ ├── temnginx.yml └── templates └── nginx.conf.j2