ansible基本操做node
一、主機連通性測試nginx
ansible qf -m pingweb
二、command模塊 ,默認就是command模塊shell
三、shell模塊vim
ansible qf -m shell -a 'cat /etc/passwd | grep "root"'centos
4.copy模塊app
====================tcp
- hosts: qfide
vars:測試
IP: "{{ ansible_ens33['ipv4']['address'] }}"
tasks:
- name: 將原有的hosts文件備份
shell: mv /etc/hosts /etc/hosts_bak
- name: 將ansible端的hosts複製到各自機器上
copy: src=/root/hosts dest=/etc/ owner=root group=root mode=0644
- name: 將新的hosts文件後面追加各自機器內網和hostname
lineinfile: dest=/etc/hosts line="{{ IP }} {{ ansible_hostname }} "
=======================
- name: copy {{ rpmname }}.conf
copy: src=/tmp/{{ rpmname }}.conf.j2 dest=/etc/{{ rpmname }}/{{ rpmname }}.conf backup=yes
ansible qf -m copy -a 'content="jfsakf\n" dest=/data/name mode=666'
5.file模塊
ansible qf -m file -a 'path=/data/app state=directory'
- name: 建立目錄
file: path=/data/a state=directory
file: path=/data/a state=absent //刪除
6.fetch模塊
ansible qf -m fetch -a 'src=/data/hello.txt dest=/data' //只能是文件
7.cron計劃任務模塊
ansible qf -m cron -a 'name="ntp update every 5 min" minute=*/5 job="/sbin/ntpdate 172.17.0.1 &> /dev/null"'
ansible qf -m cron -a 'name="df everyday" hour=15 job="df -lh >> /tmp/disk_total &> /dev/null" state=absent'
8.yum模塊
name= #所安裝的包的名稱
state = #present--->安裝, latest--->安裝最新的, absent---> 卸載軟件。
- name: install httpd
yum: name=httpd state=present
9.service模塊
ansible qf -m service -a 'name=nginx state=started enabled=true'
- name: start {{ rpmname }} service
service: name={{ rpmname }} state=started//stopped//restarted
10.user模塊
ansible qf -m user -a 'name=keer uid=11111'
11.group模塊
ansible qf -m group -a 'name=sanguo gid=12222'
12.script模塊
vim /tmp/df.sh
chmod -v +x df.sh
ansible web -m script -a '/tmp/df.sh'
13.setup模塊
ansible web -m setup -a 'filter="*mem*"' #查看內存
========================
安裝mariadb服務
---
- hosts: qf
remote_user: root
tasks:
- name: install mariadb-server package
yum: name=mariadb-server state=present
- name: starting mariadb-server service
service: name=mariadb state=started
============================
---
- hosts: qf
remote_user: root
vars:
- rpmname: nginx
nginxport: 8080
tasks:
- name: install {{ rpmname }}
yum: name={{ rpmname }} state=present
- name: copy {{ rpmname }}.conf
template: src=/tmp/{{ rpmname }}.conf.j2 dest=/etc/{{ rpmname }}/{{ rpmname }}.conf backup=yes
notify: reload
tags: reload{{ rpmname }}
- name: start {{ rpmname }} service
service: name={{ rpmname }} state=started
tags: start{{ rpmname }}
handlers:
- name: reload
service: name={{ rpmname }} state=restarted
ansible-playbook nginx.yml && ansible qf -m shell -a 'ss -tunlp|grep :80'
ansible qf -m shell -a 'systemctl stop nginx' ansible qf -m shell -a 'ss -tunlp|grep :80'
ansible-playbook nginx.yml -t startnginx
===============================================
---
- hosts: qf
vars:
IP: "{{ ansible_ens33['ipv4']['address'] }}"
tasks:
- name: 將原有的hosts文件備份
shell: mv /etc/hosts /etc/hosts_bak
- name: 將ansible端的hosts複製到各自機器上
copy: src=/root/hosts dest=/etc/ owner=root group=root mode=0644
- name: 將新的hosts文件後面追加各自機器內網和hostname
lineinfile: dest=/etc/hosts line="{{ IP }} {{ ansible_hostname }} "
===========================
---
- hosts: qf
remote_user: root
tasks:
- name: install {{ rpmname }}
yum: name={{ rpmname }} state=present
- name: copy {{ rpmname }}.conf
template: src=/tmp/{{ rpmname }}.conf.j2 dest=/etc/{{ rpmname }}/{{ rpmname }}.conf backup=yes
notify: reload
tags: reload{{ rpmname }}
- name: start {{ rpmname }} service
service: name={{ rpmname }} state=started
tags: start{{ rpmname }}
handlers:
- name: reload
service: name={{ rpmname }} state=restarted
cp /etc/keepalived/keepalived.conf /tmp/keepalived.conf.j2
ansible-playbook nginx.yml -e rpmname=keepalived
=================================
template模板
---
- hosts: qf
tasks:
- name: install conf file to centos7
shell: cat /etc/redhat-release > /root/aa.txt
when: ansible_distribution_major_version == "7"
- name: install conf file to centos6
template: src=files/nginx.cong.c6.j2
when: ansible_distribution_major_version == "6"
- name: install web packages
yum:
name: [ 'tcpdump', 'net-tools' ]
state: present
- name: add some groups
group: name={{ item }} state=present
with_items:
- group11
- group12
- group13
- name: add some users
user: name={{ item.name }} group={{ item.group }} state=present
with_items:
- { name: 'user11', group: 'group11' }
- { name: 'user12', group: 'group12' }
- { name: 'user13', group: 'group13' }
============================================
[root@server tmp]# vim nginx.conf.j2
worker_processes {{ ansible_processor_vcpus }};
listen {{ nginxport }};
---
- hosts: qf
remote_user: root
vars:
- rpmname: nginx
nginxport: 8888
tasks:
- name: install {{ rpmname }}
yum: name={{ rpmname }} state=present
- name: copy {{ rpmname }}.conf
template: src=/etc/{{ rpmname }}/{{ rpmname }}.conf dest=/etc/{{ rpmname }}/{{ rpmname }}.conf.bak backup=yes
notify: reload
tags: reload{{ rpmname }}
- name: start {{ rpmname }} service
service: name={{ rpmname }} state=started
tags: start{{ rpmname }}
handlers:
- name: reload
service: name={{ rpmname }} state=restarted
~
=============================================
roles 角色定製
[root@node12 roles]# tree
.
└── nginx
├── files
├── handlers
│ └── main.yml
├── tasks
│ └── main.yml
├── templates
│ └── nginx.cong.j2
└── vars
└── main.yml
==================================
vim handlers/main.yml //觸發器
---
- name: reload
service: name=nginx state=restarted
========================================
vim tasks/main.yml
---
- name: install {{ rpmname }}
yum: name={{ rpmname }} state=present
- name: copy {{ rpmname }}.conf
template: src={{ rpmname }}.conf.j2 dest=/etc/{{ rpmname }}/{{ rpmname }}.conf backup=yes
notify: reload
tags: reload{{ rpmname }}
- name: start {{ rpmname }} service
service: name={{ rpmname }} state=started
tags: start{{ rpmname }}
=========================================
vim vars/main.yml //變量
---
nginxport: 9999
rpmname: nginx
========================================
vim templates/nginx.conf.j2 //模板 //源文件 從nginx配置文件中複製過來的
=======
在roles統計目錄
vim /nginx_test.yml
---
- hosts: qf
roles:
- nginx
ansible-playbook nginx_test.yml
=============================================