Ansible使用整理

版权声明:知识就是为了传播! https://blog.csdn.net/weixin_36171533/article/details/85094695

每次使用都先查查,很是头疼,整理一下

安装:

yum install -y ansible
ansible -h 查看帮助

规划:

master:192.168.68.10  ansible
node1 :192.168.68.20
node2 :192.168.68.30

master,node1,node2 分别执行:ssh-keygen -t rsa生成秘钥

在ssh下面建立authorized_keys文件

将master 公钥复制到node1,node2的authorized_keys文件中实现master到node1,node2的免密码登录

编辑master配置组文件

vim /etc/ansible/hosts	编辑ansible的组文件

[ceshi]
192.168.68.20
192.168.68.30

执行命令是否生效:

本机执行测试
[root@master ~]# ansible 127.0.0.1 -a 'date'
127.0.0.1 | SUCCESS | rc=0 >>
Wed Dec 19 13:27:51 CST 2018

所有的群组执行测试
[root@master ~]# ansible all -a 'date'
192.168.68.20 | SUCCESS | rc=0 >>
Wed Dec 19 13:28:15 CST 2018

192.168.68.30 | SUCCESS | rc=0 >>
Wed Dec 19 13:28:15 CST 2018

指定测试组执行ping命令测试
[root@master ~]# ansible all -l ceshi -m ping
192.168.68.20 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}
192.168.68.30 | SUCCESS => {
    "changed": false, 
    "ping": "pong"
}

使用:

ansible all -m file -a "path=/home/haoxiaoyu state=touch" 远程创建一个文件


ansible all -m file -a "path=/home/haoxiaoyu state=absent" 远程删除一个文件


ansible all -m copy -a "src=/home/hello.txt dest=/home/ owner=root mode=0644" 拷贝文件


ansible all -m copy -a "src=/home/hello.txt dest=/home/ owner=root mode=0644 backup=yes"


ansible all -m service -a "name=nginx state=restarted sleep=10"


nginx 重启,10秒后重启


ansible all -m get_url -a 'url=http://baidu.com/1.txt dest=/tmp/jesse/ mode=0644' 

Ansible Ad-hoc
Ad-hoc 是什么?
1,命令行工具
2,适用于业务的变更
3,所见即所得

将ceshi的所有主机的/root目录下打印出来

[root@master ~]# ansible ceshi -m shell -a "ls /root" --user=root
192.168.68.30 | SUCCESS | rc=0 >>
anaconda-ks.cfg

192.168.68.20 | SUCCESS | rc=0 >>
anaconda-ks.cfg

实战安装mariadb-server  版本为最新

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

一般启动命令:
systemctl start mariadb
systemctl stop mariadb

使用ansible控制mysql的启动:

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

使用ansible查看进程

ansible ceshi -m shell -a "ps -ef|grep mysql|grep -v grep"
[root@master ~]# ansible ceshi -m shell -a "ps -ef|grep mysql|grep -v grep"
192.168.68.20 | SUCCESS | rc=0 >>
mysql      2035      1  0 22:35 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
mysql      2197   2035  0 22:35 ?        00:00:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock

192.168.68.30 | SUCCESS | rc=0 >>
mysql      1777      1  0 22:35 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
mysql      1939   1777  0 22:35 ?        00:00:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid --socket=/var/lib/mysql/mysql.sock
说明启动成功!

playbook使用:
1,声明配置
2,编排复杂的任务
3,控制任务的执行
支持的特性:
1,变量定义
2,顺序结构
3,选择结构
4,循环结构

基本的结构:
host:被操作的机器的正则
remote_user:登录机器的用户
tasks:需要在机器上执行的任务

hello word playbook
远程创建一个文本
vim ceshi.yml
---
- hosts: ceshi
  remote_user: root
  tasks:
  - name: Hello Word
    shell: touch cehsi.txt

开始执行:
ansible-playbook ceshi.yml 
play book 变量的使用:
注意:使用变量务必加"" 否则执行失败
vim ceshi2.yml
---
- hosts: ceshi
  remote_user: root
  vars:
  	com: touch hao.txt
  tasks:
  - name: Hello Word
    shell: "{{ com }}"

 ansible-playbook ceshi2.yml

实战:
 根据系统安装采用不同的方式安装redis和flask
 注意:-name 是安装的时候显示屏幕的,有利于排查

[root@master ~]# cat ceshi3.yml 
---
- hosts: ceshi
  remote_user: root
  become: true
  tasks:
  - name: install python for centos
    yum:
      name: "{{ item }}"
    state: installed
    with_items:
      - python-devel
      - python-setuptools
    when: ansible_distribution == 'CentOS'
  - name: install python for ubuntu
    apt:
      name: "{{ item }}"
      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: "{{ item }}"
    with_items:
      - flask
      - redis

开始执行:
ansible-playbook ceshi3.yml

执行的日志:
[root@master ~]# ansible-playbook ceshi3.yml 
 [WARNING]: Ignoring invalid attribute: state

ERROR! the field 'hosts' is required but was not set
[root@master ~]# ansible-playbook ceshi3.yml 
 [WARNING]: Ignoring invalid attribute: state


PLAY [ceshi] ****************************************************************************************************************

TASK [Gathering Facts] ******************************************************************************************************
ok: [192.168.68.30]
ok: [192.168.68.20]

TASK [install python for centos] ********************************************************************************************
changed: [192.168.68.30] => (item=[u'python-devel', u'python-setuptools'])
changed: [192.168.68.20] => (item=[u'python-devel', u'python-setuptools'])

TASK [install python for ubuntu] ********************************************************************************************
skipping: [192.168.68.20] => (item=[]) 
skipping: [192.168.68.30] => (item=[]) 

TASK [install pip] **********************************************************************************************************
changed: [192.168.68.30]
changed: [192.168.68.20]

TASK [pip install flask and redis] ******************************************************************************************
changed: [192.168.68.20] => (item=flask)
changed: [192.168.68.30] => (item=flask)
changed: [192.168.68.20] => (item=redis)
changed: [192.168.68.30] => (item=redis)

PLAY RECAP ******************************************************************************************************************
192.168.68.20              : ok=4    changed=3    unreachable=0    failed=0   
192.168.68.30              : ok=4    changed=3    unreachable=0    failed=0   


192.168.68.30              : ok=4    changed=3    unreachable=0    failed=0 
四个任务,执行了3个

猜你喜欢

转载自blog.csdn.net/weixin_36171533/article/details/85094695