-
ansible常识
ansible功能:批量操作,批量管理服务器,连接机器进行自动化运维
ansible组件:包括主机清单,模块和插件,playbook
-
主机加入ansible管理范围
将主机加入ansible主机清单:cd /etc/ansible->vim hosts->写入
[web]
192.168.67.136 ansible_ssh_user='root' ansible_ssh_pass='123456'
[db]
192.168.67.135 ansible_ssh_user='root' ansible_ssh_pass='123456'
这里的web和db为使用ansible指令时的主机代号
修改完主机清单后一定要ssh root@192.168.67.135 和ssh root@192.168.67.136 先连接一遍机器,后续才能进行ansible指令
建立免密通道方式为:ssh-keygen生成公钥私钥,再将/root/.ssh/下的id_rsa.pub传到需要远程控制的主机(ssh-copy-id -i id_rsa.pub root@192.168.67.135),再ssh连接检查是否已建立免密通道。
ansible all -m yum -a "name=htop state=installed"批量给连接上的机器安装软件包,如果报错可能是连接的服务器无获取相应软件包的源,可以 ansible all -m yum -a “name=epel-release=installed”先批量安装epel源再进行操作
-
ansible模块
ansible all -m shell -a “ip add”:查询所有管理机器的ip地址,执行linux命令,在执行脚本需要在被管理机器上
ansible all -m copy -a “src= dest=”:传给其他机器
ansible db -m fetch -a "src=/etc/redis.conf dest=/playbook"
ansible all -m script -a “/etc/ansible/init_env.sh”:执行脚本不需要在被管理机器上
ansible all -m yum -a “name= state=”安装或卸载脚本
ansible all -m cron -a "minute=30 hour=2 job='bash /backup/backup_file.sh' name=backup_file"给主机添加计划任务
ansible all -m service -a "name=node_exporter state=stopped"服务启动或关闭
-
playbook(多个ansible指令结合)
- hosts: web
remote_user: root
tasks:
- name: install redis
yum: name=redis state=installed
- name: start redis
service: name=redis state=started enabled=true
- name: create crontab
cron: minute=30 hour=3 job='bash /backup/backup_file.sh' name=backup_file
- hosts: db
remote_user: root
tasks:
- name: install redis
yum: name=redis state=installed
- name: start redis
service: name=redis state=started enabled=true
- name: create crontab
cron: minute=30 hour=3 job='bash /backup/backup_file.sh' name=backup_file
-
ansible-playbook常用指令
ansible-playbook --syntax-check install_nginx.yaml 检查语法错误
ansible-playbook install_nginx.yaml 执行剧本