ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# Ansible安装配置 ## 1,ansible安装 ``` wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo #m01 yum install ansible -y yum install libselinux-python -y #backup nfs01 yum install libselinux-python -y ``` ## 2,修改配置文件 ``` [root@m01 ~]# tree /etc/ansible/ /etc/ansible/ ├── ansible.cfg #ansible的配置文件 ├── hosts #ansible管理了 哪些服务器 服务器列表 └── roles 1 directory, 2 files [root@m01 ~]# cat /etc/ansible/hosts [oldboy] 172.16.1.31 172.16.1.41 ``` ### 2.1分发密钥 * #0,生成密钥 ``` ssh-keygen -t dsa ``` * #1,取消第一次连接的提示 ``` sed -i 's/#host_key_checking = False/host_key_checking = False/g' /etc/ansible/ansible.cfg ``` * #2,修改/etc/ansible/hosts文件 ``` cat >> /etc/ansible/hosts<<EOF [oldboy] 10.0.0.22 10.0.0.24 [oldboy:vars] ansible_ssh_user=root ansible_ssh_pass=123456 ansible_ssh_port=22 EOF ``` * #3,分发密钥 ``` ansible oldboy -m authorized_key -a "user=root key='{{ lookup('file', '/root/.ssh/id_dsa.pub') }}'" ``` ## 3,测试ad-hoc ``` #执行命令 ansible oldboy -m command -a "hostname" #ansible oldboy -m command -a "yum install cowsay -y #复制文件到oldboy配置的主机的/tmp/目录下 并且更改文件属主,并把权限改为0755 ansible oldboy -m copy -a "src=/etc/hosts dest=/tmp owner=oldboy mode=0755" #执行命令 ansible oldboy -m command -a "ls -l /tmp/hosts" #复制文件 如果目标主机有文件,则备份 ansible oldboy -m copy -a "src=/etc/hosts dest=/tmp backup=yes" #查看文档 ansible-doc -l|wc -l ansible-doc -s copy #复制文件 ansible oldboy -m copy -a "src=/server/scripts/yum-htop.sh dest=/server/scripts/ " #执行脚本 ansible oldboy -m shell -a "/bin/sh /server/scripts/yum-htop.sh" ansible oldboy -m script -a "/server/scripts/yum.sh" ansible oldboy -m cron -a "name='restart network' minute=00 hour=00 job=' /etc/init.d/network restart >/dev/null 2>&1'" ansible oldboy -a "crontab -l" ``` ## 4,测试playbook ``` mkdir -p /server/playbook vim ifconfig.yml - hosts: oldboy tasks: - command: ifconfig - shell: ifconfig >/tmp/ip.log ansible-playbook -C ifconfig.yml ansible-playbook ifconfig.yml vim print-ip.yml - hosts: all tasks: - name: get ip address shell: ifconfig eth0 |awk -F "[ :]+" 'NR==2{print $4}' >>/tmp/ip.log ansible-playbook -C print-ip.yml ansible-playbook print-ip.yml ansible all -a "tail -1 /tmp/ip.log ansible oldboy -m cron -a 'name="restart network" minute=00 hour=00 job="/etc/init.d/network restart >/dev/null 2>&1" state=present' #添加定时任务 cat add-cron.yml - hosts: oldboy tasks: - name: add restart network cron cron: name="restart network" minute=00 hour=00 job="/etc/init.d/network restart >/dev/null 2>&1" state=present ansible oldboy -a "crontab -l" ansible-playbook -C add-cron.yml ansible-playbook add-cron.yml - hosts: oldboy tasks: - name: add restart network cron cron: name: restart network minute: 00 hour: 00 job: /etc/init.d/network restart >/dev/null 2>&1 state: present ``` ## 注意: centos6.8 使用ansible-doc -l报错 解决方法: ``` sed -i 's@#deprecation_warnings = True@deprecation_warnings = False@g' /etc/ansible/ansible.cfg mv /usr/lib/python2.6/site-packages/ansible/modules/extras/cloud/misc/rhevm.py /tmp/ ```