ansible自动化运维入门
1.ansible是什么?
Ansible是一个开源配置管理工具,可以使用它来自动化任务,部署应用程序实现IT基础架构。ansible基于python开发,提供了多种运维模块, Ansible可以用来自动化日常任务,比如,服务器的初始化配置、安全基线配置、更新和打补丁系统,安装软件包等,而且ansible配置十分简单,被控制机器只需要支持ssh登录即可被ansible进行管理,无需安装其他的agent,对于传统的运维方式,ansible大大提高了同时管理多台服务器的运维效率。
2.ansible配置
基于ubuntu20.04(管理服务器)
1
| sudo apt install ansible
|
配置运维机器列表清单
1 2 3
| vim /etc/ansible/hosts [mywebserver] 192.168.0.5 ansible_user=root ansible_ssh_private_key_file=$HOME/.ssh/private_keys/armbian
|
常用的配置参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| ansible_connection ansible_ssh_host ansible_ssh_port ansible_ssh_user ansible_ssh_pass ansible_ssh_private_key_file ansible_ssh_common_args ansible_sftp_extra_args ansible_scp_extra_args ansible_ssh_extra_args ansible_ssh_pipelining ansible_shell_type ansible_python_interpreter ansible_interpreter ansible_shell_executable
|
3.实现远程服务器批量管理的模式
1.ad-hoc模式
1 2 3 4
| ansible-doc -s module_name ansible-doc -l
ansible SERVERLIST -m $MODULE_NAME -a $ARGS
|
2.playbook模式
playbook模式是使用yaml文件格式将命令指定的参数以及目标类似于清单一样的描述下来
实例清单
1 2 3 4 5 6 7 8 9 10 11 12
| - hosts: mycentos remote_user: root tasks: - name: copyfile to des server copy: src=/root/shell.sh dst=/tmp/shell.sh - name: install tool yum: name=nginx state=restarted - name: start service service: name=nginx state=started enable=true handlers: - name: restart nginx service: name=nginx state=restarted
|
4.ansible常用的模块
1.command模块
向远程主机执行命令 (不支持管道符)
1 2 3
| chdir 执行命令之前切换到指定目录 creates 执行命令命令前判断文件是否存在,如果存在则不执行前面的命令 removes 执行一个命令前判断指定的文件是否存在,如果存在执行前面的操作
|
2.shell模块
shell模块基本和command相同,但是shell支持管道符
1
| ansible mywebserver -m shell -a "/home/test.sh"
|
3.script模块
1
| ansible mywebserver -m script -a "/home/test.sh"
|
4.copy模块
实现主控端向目标主机拷贝文件,类似于scp功能
1
| ansible mywebserver -m copy -a "src=/home/test.sh dst=/tmp/test.sh owner=root group=root mode=0755"
|
5.stat模块
获取远程文件的状态信息
1
| ansible mywebserver -m stat -a "path=/etc/hosts"
|
6.get_url
实现远程主机下载指定url文件到远程主机
1
| ansible mywebserver -m get_url "url=https://www.baidu.com dst=/tmp/index.html mode=0444 force=yes"
|
7.yum
实现调用远程主机的yum包管理器下载指定的软件包
1
| ansible mywebserver -m yum -a "name=kubernetes-master state=latest"
|
8.crontab
配置远程主机的计划任务
1
| ansible mywebserver -m cron -a "name=mywebserver hour='5,2' job='ls -alh > /dev/null'"
|
9.mount
远程主机分区挂载
1
| ansible mywebserver -m mount -a "name=/mnt/data src=/dev/sda1 fstype=ext4 opts=ro state=present"
|
10.service
对远程主机服务进行管理
1
| ansible mywebserver -m service -a "name=nginx state=started|reloaded|stopped"
|
11.user
远程主机用户管理
1
| ansible mywebserver -m user -a "name=centos comment='user'"
|
参考:
https://juejin.cn/post/6844903631066513421