前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ansible 独孤九式

Ansible 独孤九式

作者头像
怀朔
发布2022-05-25 13:58:30
3900
发布2022-05-25 13:58:30
举报
文章被收录于专栏:运维入门时间

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)

代码语言:javascript
复制
  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)

代码语言:javascript
复制
 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如何使用 帮助文档

代码语言:javascript
复制
ansible-doc -s cron

6、ansible 命令

代码语言:javascript
复制
ansible
#--- 单命令执行 ansible----
ansible-doc
# ----- 主要帮助文档----
ansible-playbook
# 自定义组合ansible 流程化执行ansible 
ansible—galaxy
ansible-lint
ansible-pull
ansible-vault

7、Inventory Patterns

7.1 ansible 两个主要配置 文件

代码语言:javascript
复制
/etc/ansible/ansible.cfg
/etc/ansible/hosts

7.1.1 /etc/ansible/ansible.cfg

代码语言:javascript
复制
[defaults]
# hostfile       = /etc/ansible/hosts
library        = /usr/share/ansible   
remote_tmp     = $HOME/.ansible/tmp
pattern        = *
forks          = 5
poll_interval  = 15
# sudo_user      = ansible
sudo_user      = root
# ask_sudo_pass = True
# ask_pass      = True
transport      = smart
remote_port    = 22
remote_user    = manage
module_lang    = C
deprecation_warnings=False

7.1.2 /etc/ansible/hosts

代码语言:javascript
复制
[icp]
10.168.89.200
[mall]
10.251.255.221
[toc]
10.117.36.222

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

8、ansible module

例:AD-HOC

代码语言:javascript
复制
ansible 主机或组  -m 模块名 -a '模块参数'  ansible参数

8.1 commands类

代码语言:javascript
复制
1、command
2、shell
3、raw
4、script

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

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

8.2 ‘正确’的打开方式

代码语言:javascript
复制
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

代码语言:javascript
复制
ping       
yum       
setup       
service       
file       
copy       
cron       
user_group       
mount       
get_url 
fetch  

9.1 常用的命令使用

代码语言:javascript
复制
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"

fetch
ansible 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

代码语言:javascript
复制
- 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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维入门时间 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档