设为首页 收藏本站
查看: 1289|回复: 0

[经验分享] 自动化运维工具之ansible基础入门

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-8-9 10:48:33 | 显示全部楼层 |阅读模式
  自动化运维工具常用的有 ansible  saltstack  puppet等 ,前两者都是基于python开发,puppet基于ruby开发,今天我们简单介绍下ansible基础一、基础知识:
    1. 简介
        ansible基于python开发,集合了众多运维工具的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的

        (1) host inventory: 指定操作的主机,是一个配置文件里面定义监控的主机
        (2) 各种模块核心模块、command模块、自定义模块;
        (3) 借助于插件完成记录日志邮件等功能;
        (4) playbook: 剧本执行多个任务时,非必须可以让节点一次性运行多个任务。

    2、特性:

        (1) no agents: 不需要在被管理主机上安装任务agent
        (2) no server: 无服务器端,使用时,直接运行命令即可
        (3) modules in any languages: 基于模块工作,可使用任意语言开发模块
        (4) yaml not code:使用yaml语言定制剧本playbook
        (5) ssh by default:基于SSH工作


    3、优点:

        (1) 轻量级,无需在客户端安装agent,更新时,只需要在操作机上进行一次更新即可;
        (2) 批量任务可以写成脚本,而且不用分发到远程就可以执行
        (3) 使用python编写,维护简单


本次实验环境如下
wKioL1eoIQyQWjVZAAAbwZDOzxU126.jpg
1
2
1、建立免秘钥登陆
[iyunv@ansible ansible]# ssh-keygen -t rsa  一路回车即可



wKiom1eoIYDSh8j_AAA16_lXN2o444.jpg
1
2
[iyunv@ansible ansible]# ssh-copy-id -i /root/.ssh/id_rsa.pub 172.16.80.117
[iyunv@ansible ansible]# ssh-copy-id -i /root/.ssh/id_rsa.pub 172.16.80.118




测试免秘钥效果
wKiom1eoIc-iFCBrAAAQjWDVogM661.jpg
1
2
2、安装ansible
[iyunv@ansible ~]# yum install ansible -y



wKioL1eoInSDsDqWAACDz20lJOE642.jpg
1
2
3、修改文件
[iyunv@ansible ansible]# vim /etc/ansible/hosts  定义主机组及主机列表[webservers]172.16.80.117172.16.80.118



1
4、常用模块介绍



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[iyunv@ansible ansible]# ansible-doc -l
a10_server                         Manage A10 Networks AX/SoftAX/Thunder/vThunder devices                                                                          
a10_service_group                  Manage A10 Networks devices' service groups                                                                                    
a10_virtual_server                 Manage A10 Networks devices' virtual servers                                                                                    
acl                                Sets and retrieves file ACL information.                                                                                       
add_host                           add a host (and alternatively a group) to the ansible-playbook in-memory inventory                                             
airbrake_deployment                Notify airbrake about app deployments                                                                                          
alternatives                       Manages alternative programs for common commands                                                                                
apache2_module                     enables/disables a module of the Apache2 webserver                                                                              
apk                                Manages apk packages                                                                                                            
apt                                Manages apt-packages                                                                                                            
apt_key                            Add or remove an apt key                                                                                                        
apt_repository                     Add and remove APT repositories                                                                                                
apt_rpm                            apt_rpm package manager                                                                                                         
assemble                           Assembles a configuration file from fragments                                                                                   
assert                             Fail with custom message                                                                                                        
async_status                       Obtain status of asynchronous task                                                                                             
at                                 Schedule the execution of a command or script file via the at command.                                                         
authorized_key                     Adds or removes an SSH authorized key                                                                                          
azure                              create or terminate a virtual machine in azure                                                                                 
azure_rm_deployment                Create or destroy Azure Resource Manager template deployments                                                                  
azure_rm_networkinterface          Manage Azure network interfaces.                                                                                                
azure_rm_networkinterface_facts    Get network interface facts.                                                                                                   
azure_rm_publicipaddress           Manage Azure Public IP Addresses.                                                                                               
azure_rm_publicipaddress_facts     Get public IP facts.                                                                                                            
azure_rm_resourcegroup             Manage Azure resource groups.                                                                                                   
azure_rm_resourcegroup_facts       Get resource group facts.                                                                                                      
azure_rm_securitygroup             Manage Azure network security groups.




1
2
3
4
模块帮助命令

[iyunv@ansible ansible]# ansible-doc -s ping- name: Try to connect to host, verify a usable python and return `pong' on success.  action: ping
4.1ping模块  ansible webservers -m ping




wKiom1eoI-Wx7ulNAAAeEzPuSZ0035.jpg

1
2
3
4.2 shell模块(需要执行客户机上的脚本可以用该模块,脚本在被控端)

[iyunv@ansible ansible]# ansible webservers -m shell -a '/tmp/test.sh'




wKiom1eoJP2yWSyEAAAeMyfSFjI728.jpg
说明:webservers是主机组的名称,-m  后面接的是模块名称,-a后是模块的参数
1
2
4.3script模块 (脚本在主控端)
[iyunv@ansible ansible]# ansible webservers -m script -a '/root/run.sh'



wKioL1eoJZqToL8EAAA7i0LY4Zg468.jpg
1
2
4.4 command模块
[iyunv@ansible ansible]# ansible webservers -m command -a 'uptime'



wKiom1eoJfCiQw33AAAfGq8Kwqk436.jpg
1
2
4.5 yum模块
[iyunv@ansible ~]# ansible webservers -m command -a 'yum install httpd -y'




wKioL1eoJmqREoy2AACFX_W458c376.jpg


1
2
3
4.6 service模块
[iyunv@ansible ~]# ansible webservers -m service -a 'name=httpd state=started'
对服务的操作有 started  stopped restarted reloaded四个参数




wKioL1eoJuDDl4xPAAAq5LtXkO8293.jpg
1
2
4.7 copy模块
[iyunv@ansible ~]# ansible webservers  -m copy -a 'dest=/tmp src=/root/run.sh'




wKiom1eoJ4aRCJ97AABjrCBTzdU824.jpg

1
2
4.8 cron模块
[iyunv@ansible ~]# ansible all -m cron -a 'name="Cron job" minute=*/5 hour=* day=* month=* weekday=* job="/usr/bin/ntpdate pool.ntp.org"'





wKioL1eoKHLwJDraAABWoez0qUU978.jpg
1
2
4.9 file模块
[iyunv@ansible ~]# ansible all -m file -a "dest=/tmp/test.sh mode=777 owner=martin group=martin"




wKioL1eoKVnBHrD1AABF92j6WhY525.jpg

wKiom1eoKZHRokmsAAAeWpob-NQ643.jpg



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-255298-1-1.html 上篇帖子: 自动化运维工具Ansible架构部署应用及playbooks简单应用 下篇帖子: Ansible安装及简单应用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表