SlideShare une entreprise Scribd logo
1  sur  34
Télécharger pour lire hors ligne
Deploying
PHP applications
with
CC https://www.flickr.com/photos/din_bcn/2551132104/
@OrestesCA @phpvigo
Orestes
Carracedo
Software Consultant
@OrestesCA
whoami
ßetabeers
Barcelona
@OrestesCA @phpvigo
@OrestesCA @phpvigo
2003
2015
1. Deployment
2. Ansible
3. All together
@OrestesCA @phpvigo
Deployment
@OrestesCA @phpvigo
Blue-green deployment
@OrestesCA @phpvigo
http://martinfowler.com/bliki/BlueGreenDeployment.html
Simple blue-green deployment
@OrestesCA @phpvigo
-- /var/www/my-app.com
|-- current -> /var/www/my-app.com/releases/20100509150741
|-- releases
| |-- 20100509150741
| |-- 20100509145325
|-- shared
Blue-green deployment: demo
@OrestesCA @phpvigo
Ansible
1. Setup
2. Inventory
3. Commands
4. Modules
5. Tasks
6. Roles
@OrestesCA @phpvigo
What is Ansible
SCM automation tool
agent-less
simple + powerful
@OrestesCA @phpvigo
Connections
Managed Node #1
Managed Node #2
Control Machine
Inventory
ssh
@OrestesCA @phpvigo
Control Machine setup
http://docs.ansible.com
$ sudo pip install ansible
…
$ ansible
ansible ansible-doc ansible-galaxy ansible-
playbook ansible-pull ansible-vault
@OrestesCA @phpvigo
Inventory setup
$ export ANSIBLE_INVENTORY=~/ansible_hosts
[vagrant]
127.0.0.1:2222 foo=bar
[vagrant:vars]
ansible_ssh_user=vagrant
env=local
http://docs.ansible.com/intro_inventory.html
https://docs.ansible.com/playbooks_variables.html
Precedence: -i file
or $ANSIBLE_INVENTORY
or /etc/ansible/hosts
@OrestesCA @phpvigo
Modules
$ ansible vagrant -m ping --vvvv
<127.0.0.1> ESTABLISH CONNECTION FOR USER: vagrant on PORT
2222 TO 127.0.0.1
<127.0.0.1> REMOTE_MODULE ping
…
127.0.0.1 | success >> {
"changed": false,
"ping": "pong"
}
$ ansible all -m ping —vvvv
…
@OrestesCA @phpvigo
Random fact
_________________
< GATHERING FACTS >
-----------------
 ^__^
 (oo)_______
(__) )/
||----w |
|| ||
http://docs.ansible.com/faq.html#how-do-i-disable-cowsay
export ANSIBLE_NOCOWS=1
@OrestesCA @phpvigo
Playbooks
- hosts: vagrant
sudo: True
tasks:
- name: Install ntp
apt: pkg=ntp state=installed
$ ansible-playbook test_playbook.yml
…
GATHERING FACTS
ok: [127.0.0.1]
TASK: [Install ntp] 

changed: [127.0.0.1]
PLAY RECAP
127.0.0.1: ok=2 changed=1 unreachable=0 failed=0
test_playbook.yml
@OrestesCA @phpvigo
Idempotence
- hosts: vagrant
sudo: True
tasks:
- name: Install ntp
apt: pkg=ntp state=installed
$ ansible-playbook test_playbook.yml
…
GATHERING FACTS
ok: [127.0.0.1]
TASK: [Install ntp]

ok: [127.0.0.1]
PLAY RECAP
127.0.0.1: ok=2 changed=0 unreachable=0 failed=0
test_playbook.yml
@OrestesCA @phpvigo
Idempotence
- hosts: vagrant
sudo: True
tasks:
- name: Install ntp
apt: pkg=ntp state=installed
$ ansible-playbook test_playbook.yml
…
GATHERING FACTS
ok: [127.0.0.1]
TASK: [Install ntp]

ok: [127.0.0.1]
PLAY RECAP
127.0.0.1: ok=2 changed=0 unreachable=0 failed=0
test_playbook.yml
@OrestesCA @phpvigo
Facts
$ ansible vagrant -m setup
127.0.0.1 | success >> {
"ansible_facts": {
"ansible_all_ipv4_addresses": [
"10.0.2.15"
],
"ansible_all_ipv6_addresses": [
"fe80::a00:27ff:fe6b:d3e"
],
"ansible_architecture": "x86_64",
"ansible_bios_date": "12/01/2006",
"ansible_bios_version": "VirtualBox",
…
@OrestesCA @phpvigo
Templates, facts and variables
- hosts: vagrant

sudo: True
tasks:
- name: Write MOTD
template: src=templates/motd dest=/etc/motd
You’re now in the {{ env | upper }} environment at
{{ ansible_hostname }}
{{ ansible_distribution }} {{ansible_distribution_release }}
{{ ansible_distribution_version }}
{{ ansible_system }} {{ ansible_kernel }} {{ ansible_architecture }}
test_playbook.yml
templates/motd
You’re now in the LOCAL environment at Debian-jessie-amd64-
netboot Debian jessie 8.0 Linux 3.16.0-4-amd64 x86_64
@OrestesCA @phpvigo
Conditionals
- name: Enable LOCAL env prompt indicator
template: src=templates/env/local/.bash_profile
dest=~/.bash_profile
when: env == "local"
test_playbook.yml
export PS1="[$(tput setaf 2)][u@h W]$ [$(tput setaf
7)][$(tput sgr0)]"
templates/.bash_profile
[vagrant@Debian-jessie-amd64-netboot ~]$
https://docs.ansible.com/playbooks_conditionals.html
@OrestesCA @phpvigo
Notifications and handlers
- hosts: webservers
vars:
http_port: 80
max_clients: 200
remote_user: root
tasks:
- name: ensure apache is at the latest version
yum: pkg=httpd state=latest
- name: write the apache config file
template: src=/srv/httpd.j2 dest=/etc/httpd.conf
notify:
- restart apache
- name: ensure apache is running (and enable it at boot)
service: name=httpd state=started enabled=yes
handlers:
- name: restart apache
service: name=httpd state=restarted
@OrestesCA @phpvigo
Roles
site.yml
roles/
common/
files/
templates/
tasks/
handlers/
vars/
defaults/
meta/
webserver/
…
files
https://docs.ansible.com/playbooks_roles.html
https://github.com/ansible/ansible-examples
- hosts: webservers
roles:
- common
- webserver
site.yml
@OrestesCA @phpvigo
First steps in practice
Dependencies
Credentials
Deployment
@OrestesCA @phpvigo
Install dependencies
$ ansible-playbook test_playbook.yml
…
/bin/sh: 1: /usr/bin/python: not found
…
Missing Python
gather_facts: False
tasks:
- name: Install Python
raw: apt-get install python -y
- name: Gather facts after python install
setup:
- name: Write MOTD
…
test_playbook.yml
@OrestesCA @phpvigo
Install dependencies
$ ansible-playbook test_playbook.yml --sudo
PLAY [vagrant]

TASK: [Install Python]

ok: [127.0.0.1]
TASK: [Gather facts]
ok: [127.0.0.1]
TASK: [Write MOTD]

changed: [127.0.0.1]
PLAY RECAP
127.0.0.1: ok=3 changed=1 unreachable=0 failed=0
test_playbook.yml
@OrestesCA @phpvigo
Setup remote access
- name: Setup access
authorized_key: user="{{ ansible_ssh_user }}" key="{{ item }}"
with_file:
- ~/.ssh/id_rsa.pub
- /some/secure/dir/keys/admin.pub
test_playbook.yml
http://docs.ansible.com/authorized_key_module.html
$ ansible-playbook test_playbook.yml --ask-pass
SSH password:
TASK: [Setup access] 

ok: [127.0.0.1] => (item=ssh-rsa
AAAAB3NzaC1yc2EAAAADAQABAAABAQD… orestes@mjolnir.local)
…
@OrestesCA @phpvigo
Simple deployment
- name: Clone git repository
git: >
dest=/var/www/awesome-app
repo=https://github.com/initech/awesome-app
update=no
sudo: yes
sudo_user: www-data
register: cloned
- name: Clear cache
…
when: cloned|changed
test_playbook.yml
https://github.com/ansistrano

http://www.future500.nl/articles/2014/07/thoughts-on-deploying-with-ansible/
@OrestesCA @phpvigo
Advanced deployment
http://www.ansible.com/application-deployment
http://docs.ansible.com/playbooks_delegation.html
- hosts: webservers
max_fail_percentage: 30
serial: 10
@OrestesCA @phpvigo
Learning from the community
https://galaxy.ansible.com
@OrestesCA @phpvigo
All together
@OrestesCA @phpvigo
Using a contributed role
@OrestesCA @phpvigo
- name: Deploy my-app.com
hosts: production
vars:
ansistrano_allow_anonymous_stats: no
ansistrano_deploy_to: /var/www/my-app.com
ansistrano_keep_releases: 10
ansistrano_deploy_via: git
ansistrano_git_repo: git@bitbucket.org:orestes/my-app.com.git
ansistrano_git_branch: build
roles:
- { role: carlosbuenosvinos.ansistrano-deploy }
$ ansible-galaxy install carlosbuenosvinos.ansistrano-deploy
https://github.com/ansistrano/deploy
final demo
@OrestesCA @phpvigo
EOF
___________________
< THAT’S ALL FOLKS! >
-------------------
 ^__^
 (oo)_______
(__) )/
||----w |
|| ||
@OrestesCA @phpvigo

Contenu connexe

Tendances

Kernel Features for Reducing Power Consumption on Embedded Devices
Kernel Features for Reducing Power Consumption on Embedded DevicesKernel Features for Reducing Power Consumption on Embedded Devices
Kernel Features for Reducing Power Consumption on Embedded Devices
Ryo Jin
 

Tendances (20)

Build a High Available NFS Cluster Based on CephFS - Shangzhong Zhu
Build a High Available NFS Cluster Based on CephFS - Shangzhong ZhuBuild a High Available NFS Cluster Based on CephFS - Shangzhong Zhu
Build a High Available NFS Cluster Based on CephFS - Shangzhong Zhu
 
seL4 intro
seL4 introseL4 intro
seL4 intro
 
Developing a user-friendly OpenResty application
Developing a user-friendly OpenResty applicationDeveloping a user-friendly OpenResty application
Developing a user-friendly OpenResty application
 
Janus RTP forwarders @ FOSDEM 2020
Janus RTP forwarders @ FOSDEM 2020Janus RTP forwarders @ FOSDEM 2020
Janus RTP forwarders @ FOSDEM 2020
 
Kernel Features for Reducing Power Consumption on Embedded Devices
Kernel Features for Reducing Power Consumption on Embedded DevicesKernel Features for Reducing Power Consumption on Embedded Devices
Kernel Features for Reducing Power Consumption on Embedded Devices
 
Using eBPF for High-Performance Networking in Cilium
Using eBPF for High-Performance Networking in CiliumUsing eBPF for High-Performance Networking in Cilium
Using eBPF for High-Performance Networking in Cilium
 
Linux fundamental - Chap 12 Hardware Management
Linux fundamental - Chap 12 Hardware ManagementLinux fundamental - Chap 12 Hardware Management
Linux fundamental - Chap 12 Hardware Management
 
KVM tools and enterprise usage
KVM tools and enterprise usageKVM tools and enterprise usage
KVM tools and enterprise usage
 
20150511 jun lee_openstack neutron 분석 (최종)
20150511 jun lee_openstack neutron 분석 (최종)20150511 jun lee_openstack neutron 분석 (최종)
20150511 jun lee_openstack neutron 분석 (최종)
 
Docker, Linux Containers (LXC), and security
Docker, Linux Containers (LXC), and securityDocker, Linux Containers (LXC), and security
Docker, Linux Containers (LXC), and security
 
Tale of a New Bangladeshi NIX
Tale of a New Bangladeshi NIXTale of a New Bangladeshi NIX
Tale of a New Bangladeshi NIX
 
Juniper Bgp
Juniper BgpJuniper Bgp
Juniper Bgp
 
BGP protocol presentation
BGP protocol  presentationBGP protocol  presentation
BGP protocol presentation
 
OTV PPT by NETWORKERS HOME
OTV PPT by NETWORKERS HOMEOTV PPT by NETWORKERS HOME
OTV PPT by NETWORKERS HOME
 
Introduction to eBPF
Introduction to eBPFIntroduction to eBPF
Introduction to eBPF
 
Docker Swarm 0.2.0
Docker Swarm 0.2.0Docker Swarm 0.2.0
Docker Swarm 0.2.0
 
6Rd
6Rd6Rd
6Rd
 
Alphorm.com Formation F5 BIG-IP : Configuration et administration
Alphorm.com Formation F5 BIG-IP : Configuration et administrationAlphorm.com Formation F5 BIG-IP : Configuration et administration
Alphorm.com Formation F5 BIG-IP : Configuration et administration
 
The Yocto Project
The Yocto ProjectThe Yocto Project
The Yocto Project
 
Alphorm.com Formation Wallix Bastion : Le Guide du Débutant
Alphorm.com Formation Wallix Bastion : Le Guide du DébutantAlphorm.com Formation Wallix Bastion : Le Guide du Débutant
Alphorm.com Formation Wallix Bastion : Le Guide du Débutant
 

En vedette

En vedette (20)

Automation and Ansible
Automation and AnsibleAutomation and Ansible
Automation and Ansible
 
Automated Deployments with Ansible
Automated Deployments with AnsibleAutomated Deployments with Ansible
Automated Deployments with Ansible
 
Infrastructure Deployment with Docker & Ansible
Infrastructure Deployment with Docker & AnsibleInfrastructure Deployment with Docker & Ansible
Infrastructure Deployment with Docker & Ansible
 
Ansible: How to Get More Sleep and Require Less Coffee
Ansible: How to Get More Sleep and Require Less CoffeeAnsible: How to Get More Sleep and Require Less Coffee
Ansible: How to Get More Sleep and Require Less Coffee
 
Ansible 2.0 - How to use Ansible to automate your applications in AWS.
Ansible 2.0 - How to use Ansible to automate your applications in AWS.Ansible 2.0 - How to use Ansible to automate your applications in AWS.
Ansible 2.0 - How to use Ansible to automate your applications in AWS.
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentation
 
Testing Ansible with Jenkins and Docker
Testing Ansible with Jenkins and DockerTesting Ansible with Jenkins and Docker
Testing Ansible with Jenkins and Docker
 
Test-Driven Infrastructure with Ansible, Test Kitchen, Serverspec and RSpec
Test-Driven Infrastructure with Ansible, Test Kitchen, Serverspec and RSpecTest-Driven Infrastructure with Ansible, Test Kitchen, Serverspec and RSpec
Test-Driven Infrastructure with Ansible, Test Kitchen, Serverspec and RSpec
 
Using Ansible Dynamic Inventory with Amazon EC2
Using Ansible Dynamic Inventory with Amazon EC2Using Ansible Dynamic Inventory with Amazon EC2
Using Ansible Dynamic Inventory with Amazon EC2
 
Managing Your Cisco Datacenter Network with Ansible
Managing Your Cisco Datacenter Network with AnsibleManaging Your Cisco Datacenter Network with Ansible
Managing Your Cisco Datacenter Network with Ansible
 
Ansible - Swiss Army Knife Orchestration
Ansible - Swiss Army Knife OrchestrationAnsible - Swiss Army Knife Orchestration
Ansible - Swiss Army Knife Orchestration
 
Ansible tips & tricks
Ansible tips & tricksAnsible tips & tricks
Ansible tips & tricks
 
Ansible Introduction
Ansible Introduction Ansible Introduction
Ansible Introduction
 
How Ansible Makes Automation Easy
How Ansible Makes Automation EasyHow Ansible Makes Automation Easy
How Ansible Makes Automation Easy
 
It Works On My Machine: Vagrant for Software Development
It Works On My Machine: Vagrant for Software DevelopmentIt Works On My Machine: Vagrant for Software Development
It Works On My Machine: Vagrant for Software Development
 
Vagrant For DevOps
Vagrant For DevOpsVagrant For DevOps
Vagrant For DevOps
 
Vagrant to-aws-flow
Vagrant to-aws-flowVagrant to-aws-flow
Vagrant to-aws-flow
 
Microservices: The Right Way
Microservices: The Right WayMicroservices: The Right Way
Microservices: The Right Way
 
Automated Deployment with Capistrano
Automated Deployment with CapistranoAutomated Deployment with Capistrano
Automated Deployment with Capistrano
 
Multi-provider Vagrant and Chef: AWS, VMware, and more
Multi-provider Vagrant and Chef: AWS, VMware, and moreMulti-provider Vagrant and Chef: AWS, VMware, and more
Multi-provider Vagrant and Chef: AWS, VMware, and more
 

Similaire à Deploying PHP Applications with Ansible

Deploying with Super Cow Powers (Hosting your own APT repository with reprepro)
Deploying with Super Cow Powers (Hosting your own APT repository with reprepro)Deploying with Super Cow Powers (Hosting your own APT repository with reprepro)
Deploying with Super Cow Powers (Hosting your own APT repository with reprepro)
Simon Boulet
 
mapserver_install_linux
mapserver_install_linuxmapserver_install_linux
mapserver_install_linux
tutorialsruby
 
mapserver_install_linux
mapserver_install_linuxmapserver_install_linux
mapserver_install_linux
tutorialsruby
 
mapserver_install_linux
mapserver_install_linuxmapserver_install_linux
mapserver_install_linux
tutorialsruby
 
mapserver_install_linux
mapserver_install_linuxmapserver_install_linux
mapserver_install_linux
tutorialsruby
 

Similaire à Deploying PHP Applications with Ansible (20)

Deploying with Super Cow Powers (Hosting your own APT repository with reprepro)
Deploying with Super Cow Powers (Hosting your own APT repository with reprepro)Deploying with Super Cow Powers (Hosting your own APT repository with reprepro)
Deploying with Super Cow Powers (Hosting your own APT repository with reprepro)
 
Hands on Docker - Launch your own LEMP or LAMP stack
Hands on Docker -  Launch your own LEMP or LAMP stackHands on Docker -  Launch your own LEMP or LAMP stack
Hands on Docker - Launch your own LEMP or LAMP stack
 
Deployer - Deployment tool for PHP
Deployer - Deployment tool for PHPDeployer - Deployment tool for PHP
Deployer - Deployment tool for PHP
 
Lean Php Presentation
Lean Php PresentationLean Php Presentation
Lean Php Presentation
 
How to install and configure LEMP stack
How to install and configure LEMP stackHow to install and configure LEMP stack
How to install and configure LEMP stack
 
Zero Downtime Deployment with Ansible
Zero Downtime Deployment with AnsibleZero Downtime Deployment with Ansible
Zero Downtime Deployment with Ansible
 
Zero Downtime Deployment with Ansible
Zero Downtime Deployment with AnsibleZero Downtime Deployment with Ansible
Zero Downtime Deployment with Ansible
 
PHP selber bauen
PHP selber bauenPHP selber bauen
PHP selber bauen
 
Minimum Viable Docker: our journey towards orchestration
Minimum Viable Docker: our journey towards orchestrationMinimum Viable Docker: our journey towards orchestration
Minimum Viable Docker: our journey towards orchestration
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
 
mapserver_install_linux
mapserver_install_linuxmapserver_install_linux
mapserver_install_linux
 
mapserver_install_linux
mapserver_install_linuxmapserver_install_linux
mapserver_install_linux
 
mapserver_install_linux
mapserver_install_linuxmapserver_install_linux
mapserver_install_linux
 
mapserver_install_linux
mapserver_install_linuxmapserver_install_linux
mapserver_install_linux
 
Writing & Sharing Great Modules - Puppet Camp Boston
Writing & Sharing Great Modules - Puppet Camp BostonWriting & Sharing Great Modules - Puppet Camp Boston
Writing & Sharing Great Modules - Puppet Camp Boston
 
PHP on Heroku: Deploying and Scaling Apps in the Cloud
PHP on Heroku: Deploying and Scaling Apps in the CloudPHP on Heroku: Deploying and Scaling Apps in the Cloud
PHP on Heroku: Deploying and Scaling Apps in the Cloud
 
Installing php 7.4 Nginx Laravel 7.x on Centos 8
Installing php 7.4 Nginx Laravel 7.x on Centos 8Installing php 7.4 Nginx Laravel 7.x on Centos 8
Installing php 7.4 Nginx Laravel 7.x on Centos 8
 
Deployment with capifony
Deployment with capifonyDeployment with capifony
Deployment with capifony
 
DevOps in PHP environment
DevOps in PHP environment DevOps in PHP environment
DevOps in PHP environment
 
Ruby and Rails Packaging to Production
Ruby and Rails Packaging to ProductionRuby and Rails Packaging to Production
Ruby and Rails Packaging to Production
 

Plus de Orestes Carracedo (6)

Receipt processing with Google Cloud Platform and the Google Assistant
Receipt processing with Google Cloud Platform and the Google AssistantReceipt processing with Google Cloud Platform and the Google Assistant
Receipt processing with Google Cloud Platform and the Google Assistant
 
Stand out from the herd
Stand out from the herdStand out from the herd
Stand out from the herd
 
Ansible Intro - June 2015 / Ansible Barcelona User Group
Ansible Intro - June 2015 / Ansible Barcelona User GroupAnsible Intro - June 2015 / Ansible Barcelona User Group
Ansible Intro - June 2015 / Ansible Barcelona User Group
 
Android push notifications
Android push notificationsAndroid push notifications
Android push notifications
 
Betabeers Android as a Digital Signage platform
Betabeers   Android as a Digital Signage platformBetabeers   Android as a Digital Signage platform
Betabeers Android as a Digital Signage platform
 
Android as a digital signage platform
Android as a digital signage platformAndroid as a digital signage platform
Android as a digital signage platform
 

Dernier

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Dernier (20)

Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 

Deploying PHP Applications with Ansible