一样平常是运行此命令,手动安装:
sudo apt-get install htop
而我们可以通过利用apt模块来安装htop
- name:Install htop apt:name = htop
利用模块可以让你知道是否已安装。

插件是增强Ansible的核心功能。Ansible自带了很多非常方便的插件,你可以很轻松的编写自己的插件。
主机列表(Host Inventories)要供应主机列表,我们须要供应 inventory 。这是配置主机文件的办法。
以最大略的办法,我们的主机文件可以包含以下这一行:
35.178.45.231 ansible_ssh_user = ubuntu剧本(Playbook)
Ansible playbook是一种以脚本办法将命令发送到远程做事器的方法。你可以通过将脚本通报到一个或多个做事器来配置全体繁芜的环境,而不必单独利用Ansible命令经由命令行远程配置做事器。
组变量(group_vars)该文件包含一组或多组变量,例如db用户名和密码。
db_user: ubuntudb_password: 123456角色(roles)
roles是将多个tasks合并一起实行的办法,可以通过干净清晰的目录构造以非常有效的办法进行自动化,也有利于配置管理
处理者(handlers)handlers是tasks的列表,与常规tasks没有什么本色的不同,它们由全局唯一名称引用,并由关照程序关照。如果没有任何关照处理程序,它将不会运行。无论有多少个tasks关照handlers,在特定playbook中完成所有tasks后,它将仅运行一次。
Tags如果有大型playbook,则可以在不运行全体playbook的情形下运行特定部分的配置可能会很有用。增加了很大的灵巧性。
实例:安装程序,运行的步骤
构建主机和ansible.cfg在Ansible中定义Roles在Ansible中定义Handlers安装PHP模块安装Nginx添加Nginx默认配置文件添加vars以管理变量创建MySql数据库,用户名和密码创建playbook实行playbook安装支配构建主机和ansible.cfghosts.ini
[test] #your instance IP 127.0.0.39
ansible.cfg
[defaults] hostfile = hosts.ini # configure log dir log_path= logs/ansible-log.log 在Ansible中定义Roles
利用Ping模块来验证主机是否正常事情,然后我将更新所有软件包并安装两个模块git和htop
--- - ping: ~ ### - name: Update apt packages apt: update_cache: yes ## - name: Install GIT VCS apt: name: git state: latest ## - name: Install htop apt: name=htop 在Ansible中定义Handlers
--- - name: Restart PHP-FPM service: name: php{{php_version}}-fpm state: restarted #### - name: Restart Nginx service: name: nginx state: restarted安装Php模块 要在ansible中触发handlers,我们必须利用notify:重新启动PHP-FPM,handlers名称该当是唯一的,例如,如果您想仅从playbook中运行此任务,则只能通过利用 --tags =“ php”运行命令,它将仅实行此任务
--- - name: Install PHP {{php_version}} PPA Repo apt_repository: repo: 'ppa:ondrej/php' tags: - php ## - name: Install PHP {{php_version}} apt: name=php{{php_version}} state=latest ## - name: Install PHP packages become: true apt: name: \公众{{ item }}\"大众 state: latest with_items: - php{{php_version}}-curl - php{{php_version}}-fpm - php{{php_version}}-intl - php{{php_version}}-mysql - php{{php_version}}-xml - php{{php_version}}-mbstring notify: Restart PHP-FPM tags: - php 安装Nginx模块
- name: Install Nginx web server apt: name: nginx state: latest notify: Restart Nginx tags: - nginx ### - name: Update nginx config files become: true template: src: templates/nginx.conf dest: \公众/etc/nginx/sites-available/default\"大众 tags: - nginx notify: Restart Nginx ### - name: link nginx config become: true file: src: \公众/etc/nginx/sites-available/default\公众 dest: \"大众/etc/nginx/sites-enabled/default\公众 state: link tags: - nginx notify: Restart Nginx 添加nginx默认配置文件
server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; server_name {{ server_name }}; root {{ app_work_dir }}public; location / { try_files $uri $uri/ /index.php?$args; index index.php index.html index.htm; } if (!-d $request_filename) { rewrite ^/(.)/$ /$1 permanent; } location = /favicon.ico { access_log off; log_not_found off; } location ~ \.php$ { try_files $uri $uri/ /index.php?$args; index index.php index.html index.htm; fastcgi_pass unix:/var/run/php/php{{php_version}}-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME {{app_work_dir}}public$fastcgi_script_name; fastcgi_param APPLICATION_ENV testing; fastcgi_param PATH /usr/bin:/bin:/usr/sbin:/sbin; fastcgi_intercept_errors on; include fastcgi_params; } } 添加vars以管理变量
vars.yml
注:可以利用ansible-vault加密和解密vars
--- ##@ref https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html#variables-and-vaults ansible_ssh_user: \公众ubuntu\公众 current_user: \"大众ubuntu\"大众 server_name: \"大众app_name\"大众 repo_git_url: \"大众app_github_url\"大众 ansible_ssh_private_key_file: \"大众ssh_dir\公众 php_version: 7.2 app_work_dir: /var/www/app_name/ #mysql config mysql_host: \公众mysql_host\"大众 mysql_db: app_name mysql_user: sql_user mysql_pass: sql_pass #other config cache_driver: file session_driver: file app_env: production app_debug: false app_key: \"大众your_app_key\"大众 app_name: \公众app_name\"大众 app_url: \"大众your_app_url\"大众 创建MySql数据库,用户名和密码
- mysql_user: name: \"大众{{mysql_user}}\"大众 password: \公众{{mysql_pass}}\公众 priv: '.:ALL' state: present tags: - mysql-db ## - name: Create APP DB database mysql_db: name=\"大众{{mysql_db}}\"大众 state=present login_user=\"大众{{mysql_user}}\公众 login_password=\公众{{mysql_pass}}\公众 创建playbook
将test定义为该playbook的主机,而sudo yes则使您能够以sudo用户身份实行命令,我们有vars_files存储我们的vars,我们有一组roles,每个role实行特定task,末了有handlers引入所有项目的handler
--- - hosts: test #common options between modules sudo: yes gather_facts: no vars_files: - ./group_vars/vars.yml roles: - misc - php - mysql - redis - nginx - bootstrap-app - code-deploy ### handlers: - include: handlers/main.yml 实行playbook安装支配
#ansible-playbook playbookNameansible-playbook code-deploy.yml# run with specific tags ansible-playbook playbook.yml --tags=\"大众env-files,php\"大众完全的目录构造
├── ansible.cfg├── code-deploy.yml├── files│ └── dump.sql├── group_vars│ └── vars.yml├── handlers│ └── main.yml├── hosts.ini├── logs│ └── ansible-log.log├── roles│ ├── bootstrap-app│ │ └── tasks│ │ └── main.yml│ ├── code-deploy│ │ ├── tasks│ │ │ ├── config-files.yml│ │ │ └── main.yml│ │ └── templates│ │ └── env.conf│ ├── misc│ │ └── tasks│ │ └── main.yml│ ├── mysql│ │ └── tasks│ │ ├── config.yml│ │ └── main.yml│ ├── nginx│ │ ├── tasks│ │ │ └── main.yml│ │ └── templates│ │ └── nginx.conf│ ├── php│ │ └── tasks│ │ └── main.yml│ └── redis│ └── tasks│ └── main.yml├── scripts│ ├── install_composer.sh│ └── startup.sh└── site.yml
参考文献
https://ansible-tran.readthedocs.io/en/latest/
【特殊声明】转载或以其他办法利用本网站内容,请注明出处。