Ansible 独孤九式

Posted 运维入门时间

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ansible 独孤九式相关的知识,希望对你有一定的参考价值。


1、前提

       ansible是一个配置管理和应用部署工具,功能类似于目前业界的配置管理工具Chef,Puppet,Saltstack。

2、实现功能

  • 自动化部署应用

  • 自动化管理配置

  • 自动化的持续交付

  • 自动化的(AWS)云服务管理。

3、业界产品对比

工具

语言

架构

协议

Puppet

Ruby

C/S

HTTP

Chef

Ruby

C/S

HTTP

Ansible

Python

无Client

SSH

Saltstack

Python

C/S(可无Client)

SSH/ZMQ/RAET

总结

       python 入门速度快 有C/S模式支持异步 无client不能使用队列。

所以笔者个人认为 ansible 场景只适合小而美的场景!当然最近有也说Ansible 要出现C/S支持异步操作

4、如何安装ansible

4.1 yum安装(CentOS/Redhat)

 yum install http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm yum install ansible

4.2 apt-get安装(ubuntu)

 sudo apt-get install software-properties-common sudo apt-add-repository ppa:ansible/ansible sudo apt-get update sudo apt-get install ansible

5、ansible架构图

5.1 ansible-doc  [模块名]

       该命令就能列出 cron如何使用 帮助文档

ansible-doc -s cron

    

6、ansible 命令

ansible#--- 单命令执行 ansible----ansible-doc# ----- 主要帮助文档----ansible-playbook# 自定义组合ansible 流程化执行ansible ansible—galaxyansible-lintansible-pullansible-vault

7、Inventory Patterns

7.1  ansible 两个主要配置 文件 

/etc/ansible/ansible.cfg/etc/ansible/hosts

7.1.1 /etc/ansible/ansible.cfg

[defaults]# hostfile = /etc/ansible/hostslibrary        = /usr/share/ansible   remote_tmp = $HOME/.ansible/tmppattern = *forks = 5poll_interval = 15# sudo_user = ansiblesudo_user = root# ask_sudo_pass = True# ask_pass = Truetransport = smartremote_port = 22remote_user = managemodule_lang = Cdeprecation_warnings=False


7.1.2 /etc/ansible/hosts

[icp]10.168.89.200[mall]10.251.255.221[toc]10.117.36.222

例:[toc] 代表这着组 批量调度的时候引用

8、ansible module

例:AD-HOC

ansible 主机或组 -m 模块名 -a '模块参数' ansible参数


8.1 commands类

1、command2、shell3、raw4、script

归纳上面的几个命令的特点

raw 模块执行bash的结果在家目录command 模块不支持管道Script 模块输出的结果很让人心碎shell很多地方和RAW类似,更多的地方建议使用shell和command模块。但是如果是使用老版本python,需要用到raw,又或者是客户端是路由器因为没有安装python模块,那就需要使用raw模块


8.2 ‘正确’的打开方式

command模块 [执行远程命令]ansible huaishuo -m command -a 'uname -n'
script模块 [在远程主机执行主控端的shell/python脚本 ] (使用相对路径)ansible huaishuo -m script -a '/tmp/hello.py'
shell模块 [执行远程主机的shell/python脚本 支持管道新版本支持通配符 元字符]ansible huaishuo -m shell -a 'ls  /tmp/huaishuo/{a1,a2}/*.log’
raw模块 [类似于command模块、支持管道传递 支持通配符 元字符]ansible huaishuo -m raw -a "ifconfig eth0 |sed -n 2p |awk '{print \$2 }'"

9、Module

ping yum setup service file copy cron user_group mount get_url fetch  


9.1 常用的命令使用

service: ansible huaishuo -a 'chkconfig --list'ansible huaishuo -m service -a 'enabled=true name=httpd state=started'ansible huaishuo -a 'chkconfig --list'ansible huaishuo -a 'service httpd status'
cron:ansible huaishuo -m cron -a 'minute="*/10" hour="0,2,3,4" job="/bin/echo hello ansible" name="test"'
user:ansible huaishuo -m user -a "name=huaishuo password='123456'";
copy:ansible huaishuo -m copy -a "src=/tmp/www/ dest=/tmp/www"
fetchansible huaishuo -m copy -a "src=/tmp/aaa.txt dest=/data/file/ flat=yes"
yum:ansible huaishuo -m yum -a "name=git state=latest"ansible huaishuo -m yum -a "name=git state=absent"

9.2 更多模块

超级全的模块类型及分类

https://docs.ansible.com/ansible/latest/modules/modules_by_category.html

官网

https://www.ansible.com


9.3 ansible-playbook setup_node_vpc.yml

- hosts: jichu     ###### 执行组  remote_user: manage         ###### 用哪个用户运行  gather_facts: True          ######   tasks:                      ######  任务开启  - name: create dir           shell: mkdir -p /usr/local/services/prometheus_exporters  - name: scp copy: src=/alidata/ansible_yaml/node_exporter-0.14.0.linux-amd64.tar.gz dest=/usr/local/services/prometheus_exporters/node_exporter-0.14.0.linux-amd64.tar.gz owner=root - name: unarchive unarchive: src=/alidata/ansible_yaml/node_exporter-0.14.0.linux-amd64.tar.gz dest=/usr/local/services/prometheus_exporters - name: run node_exporter shell: nohup /usr/local/services/prometheus_exporters/node_exporter-0.14.0.linux-amd64/node_exporter &

分别执行下面三个命令

1、create 目录

2、从ansible服务器 复制文件给 目标机器

3、在目标机器解压

4、在目标机器执行命令



ps

另外推荐一下界面化ansible_tower


以上是关于Ansible 独孤九式的主要内容,如果未能解决你的问题,请参考以下文章

第九式 模板方法模式

ansible plugins简介

在ansible模板中使用动态组名称

(独孤九剑)--PHP视频学习--错误处理

龙门金庸之独孤求败

重构-改善既有代码的设计中文版 pdf下载