自动化运维之Ansible的安装与简单入门命令

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
简介:

早就听说ansible简单方便,但是一直没有去认真了解过,想要了解ansible的冲动是因为需要在100多台服务器上分发一个脚本,实在不想一台一台登陆上去操作。简单翻了一下文档,发现ansible上手挺容易的。最心水的还是所有的操作和配置都可以在管理结点完成,不需要在被管理结点安装agent,唯一的要求可能就是python版本了。管理结点的python要是2.6及以上,被管理结点的python版本如果是2.4需要安装simplejson包。



先从安装说起吧,如果不嫌弃linux系统自带ansible包版本低的话,可以直接安装:

yum install ansible -y


也可以在github上clone一个新版本来安装,步骤如下

git clone git://github.com/ansible/ansible.git --recursive

cd ./ansible

source ./hacking/env-setup

easy_install pip

pip install paramiko PyYAML Jinja2 httplib2 six

echo "127.0.0.1" > ~/ansible_hosts

export ANSIBLE_INVENTORY=~/ansible_hosts



执行你的第一条命令

在ansible_hosts在再加入一个被管理结点:

cat ansible_hosts 

127.0.0.1

10.32.1.206


ansible all -m ping --ask-pass

SSH password: 

127.0.0.1 | SUCCESS => {

    "changed": false, 

    "ping": "pong"

}

10.32.1.206 | SUCCESS => {

    "changed": false, 

    "ping": "pong"

}


可以通过将管理节点的公钥添加到被管理结点的authorized_keys中,就不需要--ask-pass来输入密码了。



先介绍几个简单常用的ad-hoc命令吧,什么是ad-hoc呢?其实这是相对于ansible playbook来说的,ad-hoc就相当于在命令行敲shell命令,ansible playbook就相当于你执行一个shell脚本。总之简单的任务交给ad-hoc,复杂的任务交给playbook.



ansible的几个常用参数:

-u username          #指定ssh连接的用户名,即执行后面命令的用户,默认是当前用户

-i inventory_file    #指定所使用的inventory文件的位置,默认为/etc/ansible/hosts,此处测试了/root/ansible_hosts

-m module            #指定使用的模块,默认为command

-f 10                #指定并发数,并发量大的时候,提高该值

--sudo [-k]          #当需要root权限执行的化,-k参数用来输入root密码


1,查看被管理结点的负载

# ansible all -m command -a 'uptime' 

all表示/root/ansible_hosts文件中的所有结点,可以在文件中分组,[group1],group1表示组名,上面的命令如果只想在group1中的结点执行则为:ansible group1 -m command -a 'uptime' --ask-pass


2,在被管理结点执行shell脚本

先来一个最简单的脚本:

# cat t1.sh 

#!/bin/bash

ls -l /root/


# ansible all -m script -a '/root/t1.sh' 

当然你可以编写可以实现复杂功能的脚本,这也就是为什么网上有人不同意复杂的任务用playbook来做,用shell写个脚本多简单呀,YAML都可以不用学了。


3,拷贝文件和目录

拷贝目录和文件的命令都是一样的。可以自行指定文件和目录的权限和属主

拷贝文件:

# ansible all -m copy -a "src=/root/test_dir dest=/tmp/ mode=777 owner=root" 

拷贝文件:

ansible all -m copy -a "src=/etc/fstab dest=/tmp/ mode=444 owner=root" 


4,删除文件和目录

拷贝目录和文件的命令都是一样的,指定要删除的文件的路径就可以了,如果路径是目录的话,会将该目录下面所有的文件都删除掉

ansible all -m file -a "path='/tmp/fstab' state=absent" 

ansible all -m file -a "path='/tmp/test_dir' state=absent" 



5,软件包管理

# ansible all -m yum -a "name=tree state=present"   

这条命令的意思是如果tree这个包没有安装,则安装。

安装完后我们可以测试一下命令是否可用

# tree test_dir/

test_dir/

└── t.txt


0 directories, 1 file


# ansible all -m yum -a "name=tree state=absent" --ask-pass

这个命令的意思是确认系统没有安装tree,如果有则卸载,我们执行完命令后再敲tree就报错了。

[root@centos ~]# tree

-bash: /usr/bin/tree: No such file or directory



5,创建用户和用户组

# ansible all -m user -a "name=ansible_test groups=root,zabbix append=yes state=present" 

创建ansible_test用户,并将其加入root,zabbix组

# id ansible_test

uid=503(ansible_test) gid=504(ansible_test) groups=504(ansible_test),0(root),503(zabbix)



6,管理服务

# ansible all -m service -a "name=mysqld state=stopped" 

停mysqld服务

# ansible all -m service -a "name=mysqld state=started" 

启mysqld服务

# ansible all -m service -a "name=mysqld state=restarted" 

重启mysqld服务



ansible参考资料:

ansible-doc

模块索引  http://docs.ansible.com/ansible/list_of_all_modules.html

角色仓库  https://galaxy.ansible.com

谷歌论坛  https://groups.google.com/forum/#!forum/ansible-project




本文转自 emma_cql 51CTO博客,原文链接:http://blog.51cto.com/chenql/1889184
相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
相关文章
|
7天前
|
存储 运维 Linux
|
2天前
|
运维 监控 安全
DevOps转型之路:从传统运维到自动化运维的演进
【7月更文挑战第25天】本文旨在探讨DevOps文化和实践如何影响并转变传统的运维模式,通过分析自动化运维的优势与挑战,提供实施自动化运维的策略和方法。文章将结合案例分析,展示自动化运维在提升效率、保障稳定性以及促进团队协作方面的实际成效,为读者提供一条清晰的DevOps转型路径。
13 4
|
21小时前
|
Shell 数据安全/隐私保护
Ansible Ad-hoc,命令执行模块
Ansible Ad-hoc,命令执行模块
|
21小时前
|
Serverless 网络安全 Python
Ansible原理和安装
Ansible原理和安装
|
2天前
|
机器学习/深度学习 人工智能 运维
自动化运维的崛起与实践
在数字化浪潮中,自动化运维成为提升企业IT效率、确保系统稳定性的关键。通过集成化的管理工具和智能化的操作流程,自动化运维不仅减少了人为错误,还极大提高了运维响应速度和服务质量。本文将探讨自动化运维的核心要素、实施步骤及其带来的业务价值,同时分析面临的挑战与未来的发展方向。
9 2
|
2天前
|
运维 监控
自动化运维:提升效率与减少人为错误的未来之路
【7月更文挑战第24天】本文将深入探讨自动化运维的重要性,并分析其如何通过减少人为错误、提高效率来优化IT基础设施的管理。我们将探索自动化工具的实际应用案例,讨论自动化运维实施过程中的挑战,以及如何克服这些挑战以实现最佳实践。
|
11天前
|
运维 分布式计算 大数据
自动化运维的利剑:Ansible在现代IT架构中的应用
【7月更文挑战第16天】本文深入探讨了Ansible作为自动化运维工具的核心价值及其在现代IT架构中的多维度应用。我们将通过具体案例分析,揭示Ansible如何优化IT运维流程、提升工作效率,并讨论其在云环境、容器化及大数据处理等领域的创新应用。文章旨在为读者提供一套实用的Ansible应用策略,助力企业构建更加高效、稳定的IT运维体系。
|
10天前
|
运维 监控 持续交付
自动化运维:提升效率与减少人为错误的关键策略
在信息技术快速发展的当下,自动化运维成为企业追求高效、稳定服务的重要手段。本文将探讨自动化运维的概念、实施步骤及其对企业运维工作的深远影响,揭示通过自动化工具和流程优化来提升工作效率和减少人为错误的有效途径。文章还将分享一些行业内的成功案例,为读者提供实践自动化运维的参考和启示。 【7月更文挑战第16天】
12 3
|
12天前
|
机器学习/深度学习 人工智能 运维
自动化运维:提升效率与可靠性的现代策略
在信息技术飞速发展的今天,自动化运维已成为企业追求高效、稳定服务不可或缺的一环。本文深入探讨了自动化运维的核心价值,包括其对提升工作效率、保障系统稳定性和安全性的重要性。通过分析自动化工具的应用实例和统计数据,揭示了自动化运维在现代IT管理中的关键作用,并提出了实施自动化运维的策略和建议。
17 1
|
14天前
|
机器学习/深度学习 运维 监控
智能化运维:机器学习在故障预测和自动化修复中的应用
随着信息技术的迅猛发展,企业对运维工作的效率和准确性要求越来越高。传统的运维模式已难以应对日益复杂的系统环境和数据量。本文将探讨如何利用机器学习技术提升运维工作的智能化水平,实现故障的早期预测和自动化修复,从而减少系统停机时间,提高企业运营效率。通过分析机器学习在运维领域的应用实例,揭示其在实际工作中的有效性和潜力。
32 0