Looking for:
Zoom reunião download -Download Center. Zoom Client for Meetings The web browser client will download automatically when you start or join your first Zoom meeting, and is also available for manual download here. Zoom Plugin for Microsoft Outlook The Zoom Plugin for Outlook installs a button on the Microsoft Outlook tool bar to enable you to start or schedule a meeting with one-click.
App Privacy. Size Category Business. Compatibility iPhone Requires iOS 8. Price Free. Siri Get things done within this app using just your voice. Featured In. More By This Developer. Zoom for BlackBerry. Zoom for Intune. It's super easy! Install the free Zoom app, click on "New Meeting," and invite up to people to join you on video! Have a question? Developers can show information here about how their app collects and uses your data. Learn more about data safety No information available.
Bluetooth issues galore! Track utilization and usage trends View version distribution Assign granular permission settings account, group, and user level. Expanded audio conferencing Add audio options for everyone. Hardware to optimize your meeting experience Upgrade your audio and video quality with headsets, webcams, and more. Zoom Meetings connects with some of your favorite applications to enhance collaboration.
Learn More. Integrations Easily schedule and join meetings from your existing email or calendar application. Start Zooming today! Buy Now Request a Demo. Please confirm your email below to get started. Input verification code. Confirm Cancel. For verification, please confirm your date of birth. Continue Cancel.
- VoPTd4HBNea8klVT - all telegram channel posts Pandaz Services ™
Connection of a generator to house power requires a transfer device to avoid possible injury to power company personnel. Consult a qualified electrician. The contest, in partnership with Battle of the Bands program to local high school marching bands for their video renditions of classic rock-and-roll hits.
The four month-long Battle of the Bands competition invites local high school band programs from across Washington state and the Portland, Ore. Voting continues through Dec. After that, a panel of celebrity judges will review the performances and rank them based on quality of musicianship, originality of arrangement and song choice, technical ability and overall performance.
The winners will be announced live at their school Dec. Radio station For more information about Battle of the Bands or to register, visit www. Follow Battle of the Bands on Facebook at www. Follow The Rock on Facebook at www. Photo by Brian Beckley. Tyler Ceccanti is starting to get the recognition he craves and gaining the limelight doing what he loves — skiing.
Mahre, also a Washington state native, is a three-time Warren Miller film athlete and the son of Olympic medalist Steve Mahre. His start on the slopes came as a toddler, by age 13 he was freeskiing with the older crowd and in he landed his first sponsor and the Junior U.
Extreme Skiing Championship in Colorado. His family still owns a cabin there and he returns often when his schedule allows. It was there where he made the transition from downhill to backcountry at a young age. The film has been sweeping across the nation as a limited, high-definition release, stopping in more than U. With screenings often running for one night only, Warren Miller films attract a cult-like following and mark the official start of winter for sports enthusiasts everywhere.
For details or to watch clips go to www. Billy Jacobsen, who has coached tennis in the Sumner School District for nearly two decades, has learned to compensate for more than a few of the physical obstacles that life hurled before him. He was born almost deaf and was diagnosed with Type I diabetes when he was When Jacobsen was 8, he learned how to play tennis from his dad, who was a gifted netter, and the greenhorn tennis prodigy aspired to play like his childhood heroes, stars like Ilie Nastase and Bjorn Borg.
Jacobsen, now 49, spent his teenage years as a budding high school champion and followed in his father footsteps, excelling on the University of Washington. As he aged and dealt with health issues, Jacobsen had to lower his expectations as far as his demanding pro tennis career was concerned.
Somewhere along the way, he found the love of his life, Darcie, and the union has produced four children. He stumbled upon pickleball, a sport growing in popularity by leaps and bounds in all age groups worldwide — and a sport invented in the Pacific Northwest.
That number grew to 60 in and Knopik would like to see numbers rise to riders for For more information, go to www. The event is set for Sept. Knopik is hoping to bolster his Team Brooklyn-Postal to 10 riders. A cross between tennis and ping pong, Jacobsen has polished his prowess and is now on a par with some of the best players in the world.
After experiencing stamina and dehydration difficulties in his initial couple of stabs at making his mark at the annual event, the third time was a charm for Jacobsen. When the South Puget Sound League 2A and 3A all-league volleyball squads were announced recently, Sumner collected the team Sportsmanship Award and middle hitter Kaetlynn Brown gleaned honorable mention recognition.
Billy Jacobsen,. Jacobsen recalled. Participating is tough on Jacobsen because he can seldom get his blood sugars balanced during the night. Still basking in the therapeutic rays of his victories in. He will continue to provide tennis tutelage to his children, eager to carry on the Jacobsen family tradition, and be a mentor to promising prep tennis players of the future, two things that net Jacobsen great satisfaction. To comment on this story, view it online at www.
Reach John Leggett at jleggett courierherald. The female reported that her mother had left the residence with her brother to prevent him from going to jail.
According to the reporting party, when she got home, her brother had been drinking and he began yelling at her and their mother and then started punching the walls and throwing things around the house. As she was calling , the brother came at her again and then chased her outside and said he was going to kill her, at which point the mother left with the brother.
The sister told police she felt threatened and even had her grandparents remove her child from the house. Police advised her to leave the residence. The brother was found at a church in Sumner and was involuntarily committed and had a broken hand and once again said he was going to kill his sister.
The case was forwarded to the prosecutor for potential charges of harassment and threats to kill. When police arrived they observed a large cloud. Police removed glass pipes and two pill bottles full of marijuana. The driver was cited and released for possession of marijuana and unlawful possession of drug paraphernalia. A juvenile passenger was also arrested for possession of drug paraphernalia. The case was forwarded to Remann Hall. As the officer approached the scene he saw in a back yard a female matching the description on state Route Police watched the suspect continue through back yards, climbing fences as she went.
The officer at the traffic stop reported he had probable cause to arrest the. When asked why she did not stop originally, she said she had an outstanding warrant. She told police she left the coat in one of the yards because she had a pellet gun in her purse. Police located the purse, which contained the gun, a glass pipe containing methamphetermine residue and several products from Rite Aid that still had security tags on them.
Police confirmed with Rite Aid the female had been in the store and took off running when the security beeper sounded as she tried to leave.
The driver of the car knew nothing of the shoplifting. The suspect was charged with theft. Police contacted the customer who said she had no idea that the bill was fake. She said she had gotten the. The money was placed into the evidence room and the woman, who was cooperative with the police, was released. Police are investigating. The money was used to pay for an adult website, which the victim did not authorize.
The shoplifter was observed concealing two energy drinks and a can of peanuts and attempting to leave the store without paying for them. The suspect told police he wanted the items, but did not have enough money to pay for everything so he attempted to steal some of them. He was trespassed from all Safeway stores and was cited for theft and released. The victim reported seeing a vehicle approaching from behind at a high rate of speed and then flashing its headlights.
The driver pulled to the side to let the vehicle pass but it did not. The driver pulled back on to the road and the suspect vehicle followed, flash-. The suspect vehicle then drove off as the victim attempted to contact the driver.
Police have a description of the vehicle and are investigating. It is important to note that only four percent of reported cases of osteonecrosis of the jaw have been linked to osteoporosis treatment with oral bisphosphonates.
Because the intravenous drugs used to treat bone cancer are twelve times stronger, they pose the greater risk. Patients who are going to take these drugs should schedule extractions, dental implants, and other procedures three to four months prior to beginning treatment.
If you take oral bisphosphonates, do not panic. You are at low risk for osteonecrosis. However, be vigilant about getting dental exams and cleanings.
You can rely on us to answer all your questions about dental treatments and procedures. Our team is made up of well-trained professionals who work together to provide the highest quality treatment in a warm, caring setting.
Bonney Lake Please call Ask us about our simple, painless, affordable 2-minute oral cancer exam using the Velscope. Ozone therapy and Reiki treatment are available.
Visit us on facebook. She was transported to Enumclaw Jail where she was booked on her warrant and cited for driving with license suspended. To assess what type of foot you have, look at the soles of your current exercise shoes. You would benefit most from a cushioning sneaker that is designed to absorb shock. You need motion-control, highstability sneakers. Of course the right sneakers can prevent future pain.
But if you already suffer from pain in the feet, ankles, knees, hips, or back due to the wrong kind of footwear, you need to call our office for an appointment right away. Our therapists understand how devastating foot pain can be to your everyday activities and we will work with you and your doctor to create a regimen that alleviates your pain.
Call or Our addresses are Highway , Suite B. Physical therapy with a personal touch. If the worn soles of your exercise footwear indicate that you have equal weight distribution across your foot, you should select sneakers that offer moderate stability and a balance of cushioning and support. For 20 words or less. They cannot be taken for the current issue after that time.
Those wishing to purchase guaranteed delivery should mail their check to: Courier-Herald, Circulation Dept. PO box , Enumclaw, WA, Home Services Painting. Rentals General Rentals. We hope that you enjoy a holiday full of prosperity and joy. Call today. Place your classified ad today! Call or Go online 24 hours a day www. Nice Quiet Community! Near Commons Mall. Easy I-5 access! Pet friendly. Immaculate 4, sf family home on 2.
Fully fenced, beautiful landscaping with 30x36 outbuilding. Call for more information. Home Services 0!. Scoop up the savings with our Service Guide Special. Call or go online today to www. Roofing xperience! Call me today to find out more Jen Tribbett jtribbett courierherald. Across 1. Arctic native 5. Hurting Swindles Book of snapshots 2 wds Portugese Mrs. Senescence Language conversion Con At attention Corpulent Crumb Bristles Colorless watery fluid of the blood Caper Links rental Dusk, to Donne Bacterial disease transmitted by infected meat or milk Go downhill, maybe Afflict Buttonhole Nonmetamorphosing salamander National language of Malaysia 2 wds Be theatrical Bookbinding leather Ball of yarn Halfhearted Blows it Conflicted Down 1.
Pool exercise. Advil target 3. Unit of loudness 4. Female soothsayer 5. Chinese appetizer 2 wds 6. Marienbad, for one 8. Clairvoyance, e. Source of mother-of-pearl South African grassland Wallop Break Bindle bearer Draw close Pigment made by boiling wood soot Figure of speech Association of Southeast Asian Nations acronym God of the winds Greek letters Mites Notations to ignore corrections Remember Embellished with a raised pattern Loud electric horns Animal with a mane Cousin of a raccoon Assist, in a way Amounted to Hack Jewish month Christiania, now Ticket info, maybe Bowling green Anger E, West on th St.
Let us know by calling so we can cancel your ad. Services Animals. Call to place your ad today. DUI emphases Budget focuses on crime Nov. In , Sheena Blair was one of people in Washington who died as a result of a crash involving a drinking driver. Between and , the fiveyear total was 1, Last year during the same time period, officers in Pierce County on routine and extra patrols arrested people for DUI. Task Force members urge you to join the team to prevent drunk driving.
Zero Boxes. Just 2 people deep in attraction giving their all when with each other. The free plan provides hosting for 10 pages, 10 products, 30 images; enough for a small website, and definitely enough to understand what this website building tool can do for you. With the Pro plan you can host up to 1, images, an unlimited number of products, pages, and blog posts, a personal domain, Google Analytics, and custom CSS and JS.
A free student plan is also available. All plans include the complete selection of Portfoliobox design templates. The 8b website builder is free throughout its launch phase. WP Page Builder 1 WP Page Builder is a modern front end visual page builder featuring a user-friendly interface together with a cool collection of state-of-the-art design elements.
WP Page Builder is extremely flexible, and it can be used with any theme. Quix Quix is the first Jooma-based page builder comes with real-time SEO analyzer and image compression out of the box. A large selection of Google fonts, icons, design blocks, and layouts is included in the Quiz package. Make your site mobile responsive Once a suggested option, making a website responsive become mandatory.
Today, a majority of shoppers make purchases over their cellphones. Always place your contact information above the fold If people want to contact, you or your business you can make it easy for them. Do so by placing your contact information above the fold. If you use social media, placing links at the header or footer serves the same purpose. Respect the need for speed Busy shoppers have next to no patience with website pages that are slow to load.
Nor will they stick around long if your website is simply too buggy. Make every effort to keep your site running smoothly. Ensure that videos and images are optimized for faster downloads. Fast purge complete! Can we see a reversal from here. Currently at a very favourable RR. Looks good to buy. GNFC chart is looking good.
Wait for green candle to form here on support. If this support holds it is looking good to buy. Everyone made huge money in this bull run. But lemme tell you a straight fact - the real money is made in the bear market. You just need to survive this phase of market and you will be good.
Don't try to take too much trades. Keep learning the fundamentals and technicals of stocks. These learning will help you make hell lot of money in next bull run. WIPRO buying opportunity. There are many ways to make SSH sessions work, but luckily, Pexpect has a subclass called pxssh, which specializes in setting up SSH connections.
The class adds methods for login, log out, and various tricky things to handle the different situations in the ssh login process. By default, pxssh uses the Shell prompt to synchronize the output. Putting code into a script makes it easier to use in a production environment, as well as easier to share with your colleagues. Refer to the following code:! Starts the loop for devices for device in devices. The script further expands from our first Pexpect program with the following additional features:.
Also, use w for the file mode instead of wb. Just like the pxssh subclass of Pexpect, Paramiko simplifies the SSHv2 interaction between the host and the remote device. It also provides both client and server operations. Paramiko is the low-level SSH client behind the high-level automation framework Ansible for its network modules. We will cover Ansible in later chapters. Let's take a look at the Paramiko library.
However, there is a hard dependency on the cryptography library. The library provides low-level, C-based encryption algorithms for the SSH protocol. We will show the Paramiko installation of our Ubuntu The following output shows the installation steps, as well as Paramiko successfully imported into the Python interactive prompt.
If you are using Python 2, please follow the steps below. If you are using Python 3, please refer the following command-lines for installing the dependencies. After installation, we will import the library to make sure it is correctly installed:.
This is particularly useful on a slower network connection or a busy device. This command is not required but is recommended depending on your situation. The next line sets the policy that the client should use when the SSH server's hostname; in this case, iosv-1, is not present in either the system host keys or the application's keys. In our scenario, we will automatically add the key to the application's HostKeys object.
The next few lines invoke a new interactive shell from the connection and a repeatable pattern of sending a command and retrieving the output. Finally, we close the connection. What would happen if you did not clear out the received buffer? For consistency of the deterministic output, we will retrieve the output from the buffer each time we execute a command.
We will loop over a list of devices and commands while using Paramiko instead of Pexpect. This will give us a good compare and contrast of the differences between Paramiko and Pexpect. We include a new method to clear the buffer for sending commands, such as terminal length 0 or enable, because we do not need the output for those commands.
We simply want to clear the buffer and get to the execution prompt. The rest of the program should be pretty self-explanatory, similar to what we have seen in this chapter. The last thing I would like to point out is that since this is an interactive program, we place some buffer and wait for the command to be finished on the remote device before retrieving the output: time. After we clear the buffer, during the time between the execution of commands, we will wait two seconds.
This will give the device adequate time to respond if it is busy. In this section, we will take a look at some of the other features of Paramiko. Let's look at an example of how we can use Paramiko to manage servers. We will use key-based authentication for the SSHv2 session. In this example, I used another Ubuntu virtual machine on the same hypervisor as the destination server.
We will generate a public-private key pair for our Paramiko host: ssh-keygen -t rsa. Treat the private key with the same attention as you would private passwords that you do not want to share with anybody else. You can think of the public key as a business card that identifies who you are. Using the private and public keys, the message will be encrypted by your private key locally and decrypted by the remote host using the public key.
We should copy the public key to the remote host. Open up a Terminal window for the remote server, so you can paste in the public key.
You are now ready to use Paramiko to manage the remote host. Notice that in the server example, we do not need to create an interactive session to execute multiple commands. You can now turn off password-based authentication in your remote host's SSHv2 configuration for more secure key-based authentication with automation enabled.
Some network devices, such as Cumulus and Vyatta switches, also support key-based authentication. In this last section, let's make the Paramiko program more reusable. There is one downside of our existing script: we need to open up the script every time we want to add or delete a host, or whenever we need to change the commands we want to execute on the remote host.
This is due to the fact that both the host and command information are statically entered inside of the script. Hardcoding the host and command has a higher chance of making mistakes. Besides, if you were to pass on the script to colleagues, they might not feel comfortable working in Python, Paramiko, or Linux.
By making both the host and command files be read in as parameters for the script, we can eliminate some of these concerns. Users and a future you can simply modify these text files when you need to make host or command changes. Instead of hardcoding the commands, we broke the commands into a separate commands. Up to this point, we have been using show commands; in this example, we will make configuration changes.
The device's information is written into a devices. In the script, we made the following changes: with open 'devices. Do a quick check to make sure the change has taken place in both running-config and startup-config: iosv-1 sh run i logging logging buffered iosv-1 sh start i logging logging buffered However, the method we have used feels like somewhat of a workaround for automation.
We attempted to trick the remote devices into thinking they were interacting with a human on the other end. They return data that is ideal to be fitted on a terminal to be interpreted by a human, not by a computer program.
The human eye can easily interpret a space, while a computer only sees a return character. We will take a look at a better way in the upcoming chapter. But in this book's context, the term means that when a client makes the same call to a remote device, the result should always be the same.
I believe we can all agree that this is necessary. Imagine a scenario where each time you execute the same script, you get a different result back. I find that scenario very scary. How can you trust your script if that is the case? It would render our automation effort useless because we need to be prepared to handle different returns.
Since Pexpect and Paramiko are blasting out a series of commands interactively, the chance of having a non- idempotent interaction is higher. Going back to the fact that the return results needed to be screen scraped for useful elements, the risk of difference is much higher.
Something on the remote end might have changed between the time we wrote the script and the time when the script is executed for the th time. For example, if the vendor makes a screen output change between releases without us updating the script, the script might break. If we need to rely on the script for production, we need the script to be idempotent as much as possible. Computers are much faster at executing tasks than us human engineers. If we had the same set of operating procedures executed by a human versus a script, the script would finish faster than humans, sometimes without the benefit of having a solid feedback loop between procedures.
The internet is full of horror stories of when someone pressed the Enter key and immediately regretted it. We need to make sure the chances of bad automation scripts screwing things up are as small as possible. We all make mistakes; carefully test your script before any production work and small blast radius are two keys to making sure you can catch your mistake before it comes back and bites you.
Without a way to programmatically communicate and make changes to network devices, there is no automation. We looked at two libraries in Python that allow us to manage devices that were meant to be managed by the CLI. Although useful, it is easy to see how the process can be somewhat fragile. This is mostly due to the fact that the network gears in question were meant to be managed by human beings and not computers.
Both of these tools use a persistent session that simulates a user typing in commands as if they are sitting in front of a Terminal. This works fine up to a point. It is easy enough to send commands over for execution on the device and capture the output.
However, when the output becomes more than a few lines of characters, it becomes difficult for a computer program to interpret the output. The returned output from Pexpect and Paramiko is a series of characters meant to be read by a human being. The structure of the output consists of lines and spaces that are human-friendly but difficult to be understood by computer programs.
In order for our computer programs to automate many of the tasks we want to perform, we need to interpret the returned results and make follow-up actions based on the returned results. When we cannot accurately and predictably interpret the returned results, we cannot execute the next command with confidence.
Luckily, this problem was solved by the internet community. Imagine the difference between a computer and a human being when they are both reading a web page.
The human sees words, pictures, and spaces interpreted by the browser; the computer sees raw HTML code, Unicode characters, and binary files. What happens when a website needs to become a web service for another computer? The same web resources need to accommodate both human clients and other computer programs.
Doesn't this problem sound familiar to the one that we presented before? It is important to note that an API is a concept and not a particular technology or framework, according to Wikipedia.
In computer programming, an Application Programming Interface API is a set of subroutine definitions, protocols, and tools for building application software. In general terms, it's a set of clearly defined methods of communication between various software components. A good API makes it easier to develop a computer program by providing all the building blocks, which are then put together by the programmer.
In our use case, the set of clearly defined methods of communication would be between our Python program and the destination device. The APIs from our network devices provide a separate interface for the computer programs.
The exact API implementation is vendor specific. Despite the differences, the idea of an API remains the same: it is a separate communication method optimized for other computer programs. In my first job as an intern for a local ISP, wide-eyed and excited, my first assignment was to install a router on a customer's site to turn up their fractional frame relay link remember those? How would I do that? I asked. I was handed a standard operating procedure for turning up frame relay links.
I went to the customer site, blindly typed in the commands, and looked at the green lights flashing, then happily packed my bag and patted myself on the back for a job well done. As exciting as that first assignment was, I did not fully understand what I was doing. I was simply following instructions without thinking about the implication of the commands I was typing in. How would I troubleshoot something if the light was red instead of green?
I think I would have called back to the office and cried for help tears optional. Of course, network engineering is not about typing in commands into a device, but it is about building a way that allows services to be delivered from one point to another with as little friction as possible.
The commands we have to use and the output that we have to interpret are merely means to an end. In other words, we should be focused on our intent for the network. What we want our network to achieve is much more important than the command syntax we use to get the device to do what we want it to do. If we further extract that idea of describing our intent as lines of code, we can potentially describe our whole infrastructure as a particular state.
The infrastructure will be described in lines of code with the necessary software or framework enforcing that state. In my opinion, Intent-Driven Networking is the idea of defining a state that the network should be in and having software code to enforce that state. As an example, if my goal is to block port 80 from being externally accessible, that is how I should declare it as the intention of the network.
The underlying software will be responsible for knowing the syntax of configuring and applying the necessary access-list on the border router to achieve that goal. Of course, Intent-Driven Networking is an idea with no clear answer on the exact implementation. But the idea is simple and clear, I would hereby argue that we should focus as much on the intent of the network and abstract ourselves from the device-level interaction.
In using an API, it is my opinion that it gets us closer to a state of intent-driven networking. In short, because we abstract the layer of a specific command executed on our destination device, we focus on our intent instead of the specific commands.
For example, going back to our block port 80 access-list example, we might use access-list and access-group on a Cisco and filter-list on a Juniper. However, in using an API, our program can start asking the executor for their intent while masking what kind of physical device it is they are talking to.
We can even use a higher-level declarative framework, such as Ansible, which we will cover in Chapter 4, The Python Automation Framework — Ansible Basics. But for now, let's focus on network APIs. The line break, white spaces, and the first line of the column title are easily distinguished from the human eye.
In fact, they are there to help us line up, say, the IP addresses of each interface from line one to line two and three. If we were to parse out that data, here is what I would do in a pseudo-code fashion simplified representation of the code I would write :. Split each line via the line break. I may or may not need the first line that contains the executed command of show ip interface brief. For now, I don't think I need it.
Take out everything on the second line up until the VRF, and save it in a variable as we want to know which VRF the output is showing. For the rest of the lines, because we do not know how many interfaces there are, we will use a regular expression statement to search if the line starts with possible interfaces, such as lo for loopback and Eth for Ethernet interfaces. We will need to split this line into three sections via space, each consisting of the name of the interface, IP address, and then the interface status.
Whew, that is a lot of work just for something that a human being can tell at a glance! You might be able to optimize the code and the number of lines, but in general this is what we need to do when we need to screen scrap something that is somewhat unstructured. There are many downsides to this method, but some of the bigger problems that I can see are listed as follows:. Scalability: We spent so much time on painstaking details to parse out the outputs from each command.
It is hard to imagine how we can do this for the hundreds of commands that we typically run. Predictability: There is really no guarantee that the output stays the same between different software. If the output is changed ever so slightly, it might just render our hard-earned battle of information gathering useless. Vendor and software lock-in: Perhaps the biggest problem is that once we spend all this time parsing the output for this particular vendor and software version, in this case, Cisco NX-OS, we need to repeat this process for the next vendor that we pick.
I don't know about you, but if I were to evaluate a new vendor, the new vendor is at a severe on-boarding disadvantage if I have to rewrite all the screen scrap code again. Right away, you can see the output is structured and can be mapped directly to the Python dictionary data structure. There is no parsing required—you can simply pick the key and retrieve the value associated with the key.
You can also see from the output that there are various metadata in the output, such as the success or failure of the command. If the command fails, there will be a message telling the sender the reason for the failure. You no longer need to keep track of the command issued, because it is already returned to you in the input field.
This type of exchange makes life easier for both vendors and operators. On the vendor side, they can easily transfer configuration and state information. They can add extra fields when the need to expose additional data arises using the same data structure. On the operator side, they can easily ingest the information and. It is generally agreed on that automation is much needed and a good thing. The questions are usually centered on the format and structure of the automation.
As you will see later in this chapter, there are many competing technologies under the umbrella of API. Ultimately, the overall market might decide about the final data format in the future. In the meantime, each of us can form our own opinions and help drive the industry forward. A data model is an abstract model that organizes elements of data and standardizes how they relate to one another and to properties of the real-world entities.
For instance, a data model may specify that the data element representing a car be composed of a number of other elements which, in turn, represent the color and size of the car and define its owner.
Data modeling process. When applied to the network, we can apply this concept as an abstract model that describes our network, be it a data center, campus, or global wide area network. If we take a closer look at a physical data center, a layer 2 Ethernet switch can be thought of as a device containing a table of MAC addresses mapped to each port. Similarly, we can move beyond devices and map the whole data center in a model.
We can start with the number of devices in each of the access, distribution, and core layers, how they are connected, and how they should behave in a production environment. For example, if we have a fat-tree network, how many links should each of the spine routers have, how many routes they should contain, and how many next-hops should each of the prefixes have?
These characteristics can be mapped out in a format that can be referenced against the ideal state that we should always check against. It was first published in RFC in , and has since gained traction among vendors and operators. At the time of writing, the support for YANG has varied greatly from vendors to platforms. The adaptation rate in production is therefore relatively low.
However, it is a technology worth keeping an eye out for. In their push for network automation, they have made various in-house developments, product enhancements, partnerships, as well as many external acquisitions.
However, with product lines spanning routers, switches, firewalls, servers unified computing , wireless, the collaboration software and hardware, and analytic software, to name a few, it is hard to know where to start. Since this book focuses on Python and networking, we will scope this section to the main networking products. In particular, we will cover the following:. Since ACI is a separate product and is licensed with the physical switches for the following ACI examples, I would recommend using the DevNet labs to get an understanding of the tools.
If you are one of the lucky engineers who has a private ACI lab that you can use, please feel free to use it for the relevant examples. We will use the similar lab topology as we did in Chapter 2, Low-Level Network Device Interactions, with the exception of one of the devices running nx-osv:. You may already have some of the packages such pip and git:. We will install this from the GitHub repository so that we can install the latest version:.
For our lab, we will turn on both HTTP and the sandbox configuration, as they should be turned off in production: nx-osv-2 config nxapi http port 80 nx-osv-2 config nxapi sandbox. In the last step, we turned it on for learning purposes. It should be turned off in production.
Let's launch a web browser and take a look at the various message formats, requests, and responses based on the CLI commands that we are already familiar with:. The sandbox comes in handy if you are unsure about the supportability of the message format, or if you have.
In our first example, we are just going to connect to the Nexus device and print out the capabilities exchanged when the connection was first made:!
The connection parameters of the host, port, username, and password are pretty self- explanatory. The device parameter specifies the kind of device the client is connecting to. Hopefully, by the time you read this section, the issue is already fixed. We will use the same library later on in this book. If you click on it, you will be able to get an automatically converted Python script based on the request library.
The following script uses an external Python library named requests. For the show version example, the following Python script is automatically generated for you. I am pasting in the output without any modification:. The output was parsed to include only the software version.
The best part about using this method is that the same overall syntax structure works with both configuration commands as well as show commands. For multiline configuration, you can use the ID field to specify the order of operations. We can verify the result of the previous configuration script by looking at the running-configuration of the Nexus device:.
Let's look into it a little bit more with examples. YANG, being relatively new, has a spotty supportability across vendors and product lines. For example, if we run the same capability exchange script that we have used before for a Cisco v running IOS-XE, this is what we will see: urn:cisco:params:xml:ns:yang:cisco-virtual-service? Compare this to the output that we saw for NX-OS. Industry-wide, network data modeling when supported, is clearly something that can be used across your devices, which is beneficial for network automation.
However, given the uneven support of vendors and products, it is not yet mature enough to be used exclusively for the production network, in my opinion. In the data center context, it means that the centralized controller is aware of and manages the spine, leaf, and top of rack switches, as well as all the network service functions. Some might argue that the ACI is Cisco's answer to the broader controller-based software-defined networking.
Both offer a centralized view and control of the network components, but each has its own focus and share of tool sets. For example, it is rare to see any major data center deploy a customer-facing wireless infrastructure, but a wireless network is a crucial part of enterprises today. Another example would be the different approaches to network security. While security is important in any network, in the data center environment, lots of security policies are pushed to the edge node on the server for scalability.
In enterprise security, policies are somewhat shared between the network devices and servers. This is a pretty common workflow for API interactions. The client will authenticate itself with the server in the first request and receive a time-based token. This token will be used in subsequent requests and will be served as a proof of authentication. The output displays both the raw JSON response output as well as a parsed table.
A partial output when executed against a DevNet lab controller is shown here:. As you can see, we only query a single controller device, but we are able to get a high-level view of all the network devices that the controller is aware of.
The downside is, of course, that the ACI controller only supports Cisco devices at this time. If we take a step back and look at the service provider vertical, it would make sense that automating network equipment is on the top of their list of requirements. Before the dawn of cloud-scale data centers, service providers were the ones with the most network equipment. A typical enterprise network might have a few redundant internet connections at the corporate headquarter with a few hub-and-spoke remote sites connected back to the HQ using the service provider's private MPLS network.
To a service provider, they are the ones who need to build, provision, manage, and troubleshoot the connections and the underlying networks. They make their money by selling the bandwidth along with value-added managed services.
It would make sense for the service providers to invest in automation to use the least amount of engineering hours to keep the network humming along. In their use case, network automation is the key to their competitive advantage. In my opinion, the difference between a service provider's network needs compared to a cloud data center is that, traditionally, service providers aggregate more services into a single device.
A good example would be Multiprotocol Label Switching MPLS that almost all major service providers provide but rarely adapt in the enterprise or data center networks.
Juniper, as they have been very successful, has identified this need and excel at fulfilling the service provider requirements of automating. Let's take a look at some of Juniper's automation APIs. Juniper networks contributed heavily to both of the RFC standards. In fact, Juniper was the sole author for RFC It is conceptually based on layers from top to bottom. The layers include the content, operations, messages, and transport:.
Let's take a look at its usage. It is solely used for lab purposes. You can use your favorite search engine to find out some interesting facts and history about Juniper Olive. On the Juniper device, you can always take a look at the configuration either in a flat file or in XML format. If you have not done so, refer back to that section and install the necessary packages. Starting with ncclient 0. We can parse the XML output to just include the output text: print result.
We will start with some new imports for constructing new XML elements and the connection manager object:. Under the build configuration section, we create a new element of system with subelements of host-namre and domain-name. These are the normal best practice steps lock, configure, unlock, commit for Juniper configuration changes: send, validate, and commit config conn. Juniper also provides a Python library to be used with their devices called PyEZ.
We will take a look at a few examples of using the library in the following section. If you are interested in using PyEZ, I would highly recommend at least a glance through the various topics in the guide.
We will show the installation instructions for Ubuntu The following are some dependency packages, many of which should already be on the host from running previous examples:. PyEZ packages can be installed via pip. For user authentication, we can either use password authentication or an SSH key pair. Treat the private key like a password that you never share.
The public key can be freely distributed. Now, if we try to ssh with the private key from the management station, the user will be automatically authenticated:. Let's make sure that both of the authentication methods work with PyEZ. Let's try the username and password combination: Python 3. ElementTree as ET import pprint. The device class has an rpc property that includes all operational commands. The catch is that we need to find out the xml rpc element tag. We have three ways of finding out this information:.
Of course, we will need to make configuration changes as well. The PyEZ examples are simple by design. Hopefully, they demonstrate the ways you can leverage PyEZ for your Junos automation needs. Notice that the statement specifically called out large data centers, which we already know are exploded with servers, databases, and, yes, network equipment. It makes sense that automation has always been one of Arista's leading features.
In fact, they have a Linux underpin behind their operating system, allowing many added benefits such as Linux commands and a built-in Python interpreter. Like other vendors, you can interact with Arista devices directly via eAPI, or you can choose to leverage their Python library. We will see examples of both. We will also look at Arista's integration with the Ansible framework in later chapters.
In the case of eAPI, we will specify a method key with a runCmds value for our intention. After enabling the agent, you will be able to access the exploration page for eAPI by going to the device's IP address. If you have changed the default port for access, just append it at the end. The authentication is tied into the method of authentication on the switch. We will use the username and password configured locally on the device.
By default, a self-signed certificate will be used:. For example, if I want to see how to make a request body for show version, this is the output I will see from the explorer:.
Arista EOS explorer viewer. The overview link will take you to the sample use and background information while the command documentation will serve as reference points for the show commands. Each of the command references will contain the returned value field name, type, and a brief description.
However, as of the time of writing this book, it has a dependency of Python 2. By the time you read this book, there might be an updated status. As you can see, the result is a list containing one dictionary item. To be more familiar with the command reference, I recommend that you click on the Command Documentation link on the eAPI page, and compare your output with the output of show version in the documentation.
You can see from the previous example that the runCmds method contains a list of commands. For the execution of configuration commands, you can follow the same framework, and configure the device via a list of commands.
In our example, we wrote a function that takes the switch object and the list of commands as attributes:! Overall, eAPI is fairly straightforward and simple to use. With a few commands, you can start integrating Arista EOS automation into your network. It provides a set of bindings to configure Arista EOS nodes.
Why do we need Pyeapi when we already have eAPI? However, if you are in a non-Python environment, eAPI is probably the way to go. Thus, it is compatible with most programming languages.
When I first started out in the field, Perl was the dominant language for scripting and network automation. There are still many enterprises that rely on Perl scripts as their primary automation tool. However, for those of us who prefer to code in Python, a native Python library means a more natural feeling in writing our code.
Comments
Post a Comment