前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >笔记分享(3) ansible安装使用(不含playbook)

笔记分享(3) ansible安装使用(不含playbook)

原创
作者头像
大大刺猬
修改2021-04-01 14:13:31
8050
修改2021-04-01 14:13:31
举报
文章被收录于专栏:大大刺猬大大刺猬

ansible这玩意适合于不经常写shell的人, 为什么这么说呢, 经常写shell的会感觉ansible有些地方很ZZ. 但总的来说还是不错的, 至少省力.

注: 有的客户环境不允许使用ansible之类的, 可以自己写脚本, ssh -C COMMAND (如果不允许做免密的话, 用expect或者sshpass)

废话少说, 上笔记

代码语言:javascript
复制
ansible 这玩意是红帽的. 只有server端就可以.是用的ssh(paramiko)连接的. 完全是python写的.
依赖:
/usr/bin/env
/usr/bin/python2
PyYAML
config(ansible) = 2.9.10-1.el7
python(abi) = 2.7
python-httplib2
python-jinja2
python-paramiko
python-setuptools
python-six
python2-cryptography
python2-jmespath
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PartialHardlinkSets) <= 4.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
sshpass
rpmlib(PayloadIsXz) <= 5.2-1

安装:
清华大学yum源:https://mirror.tuna.tsinghua.edu.cn/epel/7/x86_64/
yum install ansible -y





讲解:ansible主要有7个命令:ansible、ansible-doc、ansible-galaxy、ansible-lint、ansible-playbook、ansible-pull、ansible-vault 
ansible :指令核心部分,其主要用于执行ad-hoc命令,即单条命令。默认后面需要跟主机和选项部分,默认不指定模块时,使用的是command模块
ansible-doc : 帮助文档(这点就非常好用,很有红帽的风格)
ansible-galaxy  下载扩展模块的, 类似yum,pip,easy_install之类的
ansible-lint : 检查playbook语法的. 比如: ansible-lint playbook.yml
ansible-playbook : 用得最多的命令. 主要是读取playbook文件后,执行相应内容的.
ansible-pull : 也就是pull模式. ansible默认是push,主动拉数据; 当数量巨大的机器要配置的时候,用这玩意.
ansible-vault : 加密解密的

最核心的两个命令是:ansible  ansible-playbook 








配置:
配置免密(在inventory文件里面指定用户密码不安全):
ssh-keygen -t rsa
ssh-copy-id -i root@192.168.101.172

vim /etc/ansible/hosts
[test_server]
192.168.101.171 ansible_ssh_user=root ansible_ssh_pass=yinhai@123
192.168.101.172 

[other_server]
192.168.101.68
192.168.101.[200:250]  #表示200到250的主机段.

#有很多参数可选的.
#ansible_ssh_host #用于指定被管理的主机的真实IP
#ansible_ssh_port #用于指定连接到被管理主机的ssh端口号,默认是22
#ansible_ssh_user #ssh连接时默认使用的用户名
#ansible_ssh_pass #ssh连接时的密码
#ansible_sudo_pass #使用sudo连接用户时的密码
#ansible_sudo_exec #如果sudo命令不在默认路径,需要指定sudo命令路径
#ansible_ssh_private_key_file #秘钥文件路径,秘钥文件如果不想使用ssh-agent管理时可以使用此选项
#ansible_shell_type #目标系统的shell的类型,默认sh
#ansible_connection #SSH 连接的类型:local , ssh , paramiko,在 ansible1.2之前默认是 paramiko ,后来智能选择,优先使用基于ControlPersist 的ssh
#ansible_pythoninterpreter #用来指定python解释器的路径,默认为/usr/bin/python 同样可以指定ruby 、perl的路径
#ansible_interpreter #其他解释器路径,用法与ansible_python_interpreter类似,这里””可以是ruby或perl等其它语言








使用:
ansible -m command -a "uptime" test_server
ansible -m command -a "uptime" -i /etc/ansible/hosts test_server
ansible -m command -a "uptime" 192.168.101.171

#列出所有可用模块(2.9.10版本大概3387个):
ansible-doc -l


#查看模块的具体参数:
ansible-doc shell  #查看shell的参数
ansible-doc -s  shell  #简洁版.只有简单的描述,没得类型,默认值等.


语法:
ansible [-i /etc/ansible/hosts] GROUP_NAME -m MODUAL_NAME -a "参数1 参数2"
例子:ansible test_server -m shell -a "sh /tmp/topa.sh | head"
-i 指定inventory文件路径,默认为/etc/ansible/hosts
GROUP_NAME  inventory文件里面的组名
-m 指定模块(MODUAL的简写)
-a 指定参数(MODULE_ARGS的简写)









#常用模块:

#shell模块:
ansible -i /etc/ansible/hosts test_server -m shell -a "sh /tmp/topa.sh | head"


#copy模块:
ansible -i /etc/ansible/hosts test_server -m copy -a "src=/tmp/topa.sh dest/tmp owner=root group=root mode=0644"
ansible -i /etc/ansible/hosts test_server -m copy -a "src=/etc/ansible/ dest/tmp owner=root group=root mode=0644"  #也可以拷贝目录


#crontab(计划任务)模块
ansible -i /etc/ansible/hosts test_server -m cron -a "name=test.cron job='/bin/touch /tmp/testcrontab.txt' minute='20,25' hour='1,5,10' day='1' month='1' weekly='1,5' "
ansible -i /etc/ansible/hosts test_server -m cron -a "name=test.cron state=absent"

#yum模块:
ansible -i /etc/ansible/hosts test_server -m yum -a "name=vsftpd"


#service(服务)模块:
ansible -i /etc/ansible/hosts test_server -m service -a "name=vsftpd state=started enabled=yes"





#playbook  #平时工作主要用这玩意(剧本). 这个官网讲得更详细的. 
http://www.ansible.com.cn/docs/playbooks_intro.html#about-playbooks
https://github.com/ansible/ansible-examples  #例子



注意:
yaml文件均以 --- 开头.
列表中的所有成员缩进要一样, 且用 '- '开头 (没得引号,是一个减号和空格)


原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

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